部署k8s 1.28.9版本

   继上篇通过vagrant与virtualBox实现虚拟机的安装。笔者已经将原有的vmware版本的虚拟机卸载掉了。这个场景下,需要重新安装k8s  相关组件。由于之前写的一篇文章本身也没有截图。只有命令。所以趁着现在。写一篇,完整版带截图的步骤。现在行业这么卷。离职了让我能好好的写点东西。

描述:此篇文章只有具体的步骤,组件内部核心控件。以及具体使用方式。并不包含在这篇内容中。如果有需要。小伙伴儿们可以提出来。作为持续的内容更新也是不错的。好了不喜欢看唠叨的同学们。咱们直接开始。上述纯属无聊的废话。


版本:V1.28.9 版本

部署方式:Kubeadm 【单master 多node部署】

下方 master节点 和node节点  都要进行配置 。


  (1) 升级linux内核,由于低版本linux内核有可能引发一些不确定因素 所以笔者在此升级了下linux内核

#查询当前linux内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

# 步骤依次执行即可
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

yum --enablerepo="elrepo-kernel" -y install kernel-lt.x86_64

grub2-set-default 0

grub2-mkconfig -o /boot/grub2/grub.cfg

#重新启动
reboot  

#启动后  重新查询linux内核是否变更
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

(2)关闭防火墙状态。

#停止当前防火墙
systemctl  stop     firewalld

# 重启后也关闭防火墙 避免自动重启
systemctl  disable  firewalld 

#检查当前防火墙状态
systemctl   status firewalld

(3)关闭掉swap分区

#关闭当前swap分区
sed  -i   's/.*swap.*/#&/'  /etc/fstab 
swapoff -a

(4)关闭掉 selinux

sed -i 's/enforcing/disabled/'  /etc/selinux/config
setenforce 0

(5)添加host  请修改成自己的maste节点IP和workNode节点IP

echo "192.168.18.219 master \
192.168.18.220 node01
192.168.18.221 node02"  >> /etc/hosts

(6)添加hostname 同时让hostname 生效

#替换成自己的主机名称 也可以按照上述内容 master  node01  node02 配置
hostnamectl  set-hostname   主机名称

# 查询当前hostname
hostname

#使hstname生效
systemctl restart NetworkManager

(7)安装时间同步插件 保证三台机器时钟都是同步的

yum install chrony -y
systemctl start chronyd && systemctl enable chronyd && chronyc sources
date

(8)添加路由转发

# 内核路由转发  以及网桥过滤
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.swappiness=0
EOF

(9)使路由转发生效

sysctl --system

(10)  安装ipset

# 安装ipset
yum -y install ipset ipvsadm

(11)  加载ipvs

# 加载
cat > /etc/sysconfig/modules/ipvs.modules << EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF

(12) 给ipvs 赋予权限

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

(13)安装docker 请直接按照步骤来

#如果 之前安装过docker 可以按照此步骤先进行卸载操作 如果首次安装 不需要第一步
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

#安装 yum-utils
yum install -y yum-utils

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#上述如果地址添加失败可以通过下述地址下载
yum-config-manager  --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

#查看当前docker  版本
docker -v

#开机自启动 docker 
systemctl enable docker.service
systemctl enable containerd.service

#启动 docker 
systemctl  start docker  &&  systemctl  status docker 


(14)  添加docker  镜像地址

cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerhub.azk8s.cn",
"http://hub-mirror.c.163.com"
]
}
EOF

(15) 安装wget 为了安装 cri-docker cri-docker 因为k8s新版本是基于container.io实现的 所以需要

下载 cri-docker ,请注意 下述命令中的 $MAINPID  执行过程中有可能会丢失。 请手动 补充到位置

#安装wget 为了下载cri-docker 由于k8s  新版本是基于 container.io  所以可以通过cri-docker 适#配
yum  install wget  

#下载 cri-docker 
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.8/cri-dockerd-0.3.8.amd64.tgz

#解压当前 tar包  默认下载当前目录  
tar xf cri-dockerd-0.3.8.amd64.tgz

#将解压内容 移动到 /usr/bin
mv cri-dockerd/cri-dockerd  /usr/bin/

#创建cri-docker.service 文件
cat > /usr/lib/systemd/system/cri-docker.service<<EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --container-runtime-endpoint fd:// 
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

#上述中的  $MAINPID   有可能会丢失 如果丢失 请执行如下代码 添加上 $MAINPID   
vim  /usr/lib/systemd/system/cri-docker.service   

(16) 添加cri-docker.socket  

cat > /usr/lib/systemd/system/cri-docker.socket<<EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF

(17)  修改了 systemd 的相关配置 所以需要让其生效

# 对cri-docker 的配置让其生效
systemctl daemon-reload 

#开机自启动  启动cri-docker  同时查看状态
systemctl enable cri-docker && systemctl start cri-docker && systemctl status cri-docker

(18)  添加k8s镜像地址

# 添加k8s镜像源地址
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF

(19) 前期准备工作已经做好 那么 安装 kubeadm   kubelet   kubectl 同时启动kubelet 设置开机自启动 同时查看状态  现在的kubelet还是启动失败的  请不要慌张 

#安装  kuebadm   kubelet   kubectl
yum install -y kubelet kubeadm kubectl

#启动kubelet 并设置开机自启动
systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet

(20)  配置cgroup  和docker 保持一致

# 配置 cgroup 驱动与docker一致
cp /etc/sysconfig/kubelet{,.bak}

cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF

#安装自动补全 工具
yum install  -y bash-completion  

(21) 用户bash目录  添加kubectl 变量

source /usr/share/bash-completion/bash_completion

echo "source <(kubectl completion bash)" >> ~/.bashrc

source  ~/.bashrc  

(22) 查看 kubeadm 镜像

查看镜像仓库是否有相关镜像
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

(23)拉取相关镜像                

kubeadm config images pull  --image-repository registry.aliyuncs.com/google_containers \
--cri-socket=unix:///var/run/cri-dockerd.sock

 上述为 master节点 和node节点  都要进行配置 下述  将分开说明 master  和  node 的配置


下方配置请注意  一部分是master 需要配置的  一部分是node需要配置的

Master配置


# master节点运行  启动master节点相关组件及容器【master】
kubeadm init \
--apiserver-advertise-address 192.168.31.219 \
--kubernetes-version v1.28.11 \
--pod-network-cidr=10.244.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--ignore-preflight-errors=all


#上述配置中的   
api-server-address 代表的是主节点的ip地址
kubernetes-version 代表的是k8s组件版本 
pod-network-cidr   代表内部的区分流量
image-repository    镜像仓库地址
cri-socket          指定cri-docker的 地址

             

(master)上述执行成功后 会提示执行相关命令

# 创建kubeconfig master启动完成后也会提示此命令【master】
mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

(master) 创建自有证书 生成内容 在node节点是有用的  请一定要记住 下方已经标注出来了,一个是token  一个是生成的 有效的sha256的值

# 创建相关kubeadm token 【master】生成的值 在node节点中是需要的请记住
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

# 使用我们自己生成的证书  在子节点进行join时需要token  以及sha【masert】
kubeadm token create --ttl 0  --print-join-command

# 查看是否已经创建成功证书 在node节点join要用到 【master】

master  下载网络插件  还记着前边笔者说过的 kubelet还没起来的问题吗 ,当把cin插件下载完成后 kubelet就会恢复正常

修改相关配置 calico.yml文件中相关配置CALICO_IPV4POOL_CIDR 改成admin init中  --pod-network-cidr 参数相同,但是由于现在的dokerhub无法下载镜像,通过阿里云下载相关镜像还无法找到对应的版本的网络代理插件。那么笔者喜欢让大家白嫖。压缩包会同步出来。这样你们就不用科学上网去自己寻找了。如果按照笔者的配置就不需要修改上述的CALICO_IPV4POOL_CIDR。

请将所有tar  包  执行  docker load   添加到master  镜像中  然后   通过kubectl  执行

wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yam

# 如果下载失败  请把使用笔者给的安装包的内容
kubectl  apply -f  calico.yamll

Node节点


将node节点添加到 master中去


#在node节点执行  加入到主节点
kubeadm join 192.168.31.219:6443  --token  juw32i.1cb4jrcr4fm8scvy  --discovery-token-ca-cert-hash sha256:5be9defe9be83e5b50b51490009b8bb8a22a7bf9b9d71c6176cca81581d98fba  --cri-socket=unix:///var/run/cri-dockerd.sock

#解释
token   是在主节点生成的  上述标黄的内容
sha256:  自己生成的值   也在上述标黄的内容中  
 

最终  可以在master  查看   节点状态  如果显示ready 那么就是正常启动的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/800255.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TikTok账号矩阵运营怎么做?

这几年&#xff0c;聊到出海避不过海外抖音&#xff0c;也就是TikTok&#xff0c;聊到TikTok电商直播就离不开账号矩阵&#xff1b; 在TikTok上&#xff0c;矩阵养号已经成为了出海电商人的流行策略&#xff0c;归根结底还是因为矩阵养号可以用最小的力&#xff0c;获得更大的…

Spring之事务管理TranscationManager(大合集)

原子性 事务是数据库的逻辑工作单位&#xff0c;事务中包括的诸操作要么全做&#xff0c;要么全不做。 一致性 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性 一个事务的执行不能被其他事务干扰。 持续性 一…

大数据hive表和iceberg表格式

iceberg: https://iceberg.apache.org/ iceberg表&#xff0c;是一种面向大型分析数据集的开放表格式&#xff0c;旨在提供可扩展、高效、安全的数据存储和查询解决方案。它支持多种存储后端上的数据操作&#xff0c;并提供 ACID 事务、多版本控制和模式演化等特性&#xff0c…

Django select_related()方法

select_related()的作用 select_related()是Django ORM&#xff08;对象关系映射&#xff09;中的一种查询优化方法&#xff0c;主要用于减少数据库查询次数&#xff0c;提高查询效率。当你在查询一个模型实例时&#xff0c;如果这个实例有ForeignKey关联到其他模型&#xff0…

uniapp:国家、省市区,4级联动

使用uview的Select 列选择器 选择器完成国家&#xff0c;省市区&#xff0c;4级联动 要求后台数据格式&#xff1a; list: [{label: 中国,value: 1,children: [{label: 河南省,value: 2,children: [{label: 郑州市,value: 3,children: [{label: 中原区,value: 4},{label: 郑东…

RocketMQ实现分布式事务

RocketMQ的分布式事务消息功能&#xff0c;在普通消息基础上&#xff0c;支持二阶段的提交。将二阶段提交和本地事务绑定&#xff0c;实现全局提交结果的一致性。 1、生产者将消息发送至RocketMQ服务端。 2、RocketMQ服务端将消息持久化成功之后&#xff0c;向生产者返回Ack确…

OpenCV开发笔记(七十八):在ubuntu上搭建opencv+python开发环境以及匹配识别Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140435870 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

PHP恋爱话术微信小程序系统源码

&#x1f496;恋爱高手的秘密武器&#xff01;恋爱话术微信小程序&#xff0c;让情话信手拈来✨ &#x1f4ad;【开场白&#xff1a;恋爱路上的甜蜜助手】&#x1f4ad; 还在为跟心仪的TA聊天时找不到话题而尴尬&#xff1f;或是担心自己说的每句话都显得那么“直男/女”&…

Python和C++行人轨迹预推算和空间机器人多传感融合双图算法模型

&#x1f3af;要点 &#x1f3af;双图神经网络模型&#xff1a;最大后验推理和线性纠错码解码器 | &#x1f3af;重复结构和过约束问题超图推理模型 | &#x1f3af;无向图模型变量概率计算、和积消息传播图结构计算、隐马尔可夫模型图结构计算、矩阵图结构计算、图结构学习 |…

mysql group_concat()函数、行转列函数

文章目录 一、group_concat函数1.1、语法1.2、示例1.2.1、查询所有姓名&#xff0c;并显示在一行1.2.2、单列合并&#xff0c;指定冒号分隔符1.2.3、单列合并&#xff0c;去重1.2.4、多列拼接合并1.2.5、多列拼接合并&#xff0c;列和列之间指定分隔符 在mysql的关联查询或子查…

安卓学习中遇到的问题【bug】

安卓学习中遇到的问题 1Gradle下载慢怎么办&#xff1f; Gradle下载慢怎么办&#xff1f; distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-7.5-bin.zip 2 Could not resolve all files for configuration ‘:classpath‘. &#xff1e; Could not resolv…

聊聊常见的分布式ID解决方案

highlight: xcode theme: vuepress 为什么要使用分布式ID&#xff1f; 随着 Web 开发技术的不断发展&#xff0c;单体的系统逐步走向分布式系统。在分布式系统中&#xff0c;使用分布式 ID(Distributed IDs)主要是为了在没有单点故障的情况下生成唯一标识符。这些唯一标识符在很…

Python 读取esxi上所有主机的设备信息

&#xff08;主要是为了统计所有虚拟机的设备名称和所属主机&#xff09; 代码&#xff1a; from pyVim import connect from pyVmomi import vim import ssldef get_vm_devices(vm):devices []try:if vm.config is not None and hasattr(vm.config, hardware) and hasattr(v…

AI安全系列——[第五空间 2022]AI(持续更新)

最近很长时间没有更新&#xff0c;其实一直在学习AI安全&#xff0c;我原以为学完深度学习之后再学AI安全会更加简单些&#xff0c;但是事实证明理论转实践还是挺困难的&#xff0c;但是请你一定要坚持下去&#xff0c;因为“不是所有的坚持都有结果&#xff0c;但总有一些坚持…

Mac电脑清理软件有哪些 MacBooster和CleanMyMac哪个好用 苹果电脑清理垃圾软件推荐 cleanmymac和柠檬清理

对于苹果电脑用户来说&#xff0c;‌选择合适的清理软件可以帮助优化电脑性能&#xff0c;‌释放存储空间&#xff0c;‌并确保系统安全。一款好用的苹果电脑清理软件&#xff0c;能让Mac系统保持良好的运行状态&#xff0c;避免系统和应用程序卡顿的产生。有关Mac电脑清理软件…

CSS-1_0 CSS和文档流

文章目录 CSS和文档流如何证明这个流的存在呢&#xff1f;流和display番外&#xff1a;inline-block 碎碎念 CSS和文档流 首先什么叫流呢&#xff1f; 通常来说&#xff0c;我们最终看到的网页是HTML文档中定义的各个元素挨个输出的结果&#xff0c;这种一个接一个输出的方式…

14_Shell重定向输入输出

14_Shell重定向输入输出 输出重定向&#xff1a;一般情况&#xff0c;输出是在终端直接显示&#xff0c;改变输出位置&#xff0c;改变到文件中&#xff0c;这就是输出重定向 输入重定向&#xff1a;一般情况&#xff0c;输入是读取用户终端输入&#xff0c;改变输入位置&#…

Java二十三种设计模式-建造者模式(4/23)

建造者模式&#xff1a;构建复杂对象的专家 引言 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于创建一个复杂的对象&#xff0c;同时允许用户只通过指定复杂对象的类型和内容就能构建它们&#xff0c;它将对象的构建和表示分离&am…

Spring Boot 集成 RabbitMQ

依赖与配置 在 pom.xml 中引入 RabbitMQ 相关依赖 <!-- AMQP 依赖, RabbitMq --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>3.2.7</version> &…

详解注意力机制上篇【RNN,Seq2Seq(Encoder-Decoder,编码器-解码器)等基础知识】

NLP-大语言模型学习系列目录 一、注意力机制基础——RNN,Seq2Seq等基础知识 二、注意力机制【Self-Attention,自注意力模型】 &#x1f525; 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;理解和生成自然语言的能力对于构建智能系统至关重要。从文本分类、机器翻…