K8s安装部署(v1.28)--超详细(cri-docker作为运行时)

devtools/2024/9/30 4:29:34/

1、准备环境

ip角色系统主机名cpumem
192.168.40.129mastercentos7.9k8smaster48
192.168.40.130node1centos7.9k8snode148
192.168.40.131node2centos7.9k8snode248
192.168.40.132node3centos7.9k8snode348

2、系统配置(所有节点)

重要:首先将各主机ip配置为静态、主机名修改、时间同步 等

2.1 修改仓库源

#修改仓库源、安装必要工具
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

2.2 关闭防火墙 

#关闭firewalld配置iptabes
systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && iptables-save > /etc/sysconfig/iptables

2.3 关闭swap 和selinux

#关闭swap:
swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab
#关闭selinux:
setenforce 0 && sed -i 's/enforcing/disabled/' /etc/selinux/config

2.4 配置节点hosts 

cat >> /etc/hosts <<EOF
192.168.40.129 k8smaster
192.168.40.130 k8snode1
192.168.40.131 k8snode2
192.168.40.132 k8snode3
EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.40.129 k8smaster
192.168.40.130 k8snode1
192.168.40.131 k8snode2
192.168.40.132 k8snode3

2.5 设置系统时区为 中国/上海 

timedatectl set-timezone Asia/Shanghai
#将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
#重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond

2.6 关闭postfix 

#关闭postfix
systemctl stop postfix && systemctl disable postfix

 3、安装docker(所有节点)

3.1 安装docker

参考:《【CentOS7】Linux安装Docker教程(保姆篇)_linux centos7 安装docker-CSDN博客》

3.2 daemon.json配置

cat > /etc/docker/daemon.json <<EOF
{#设置驱动"exec-opts": ["native.cgroupdriver=systemd"],#设置阿里云镜像服务器地址(启用了https)"registry-mirrors": ["https://exsnkv91.mirror.aliyuncs.com"],#设置是有镜像服务器地址(未启用https)"insecure-registries":["192.168.40.129:5000"]
}
EOF
systemctl daemon-reload
systemctl restart docker

 

4、配置cri-docker(所有节点)

配置cri-docker使kubernetesdocker作为运行时 自 1.24 版起,Dockershim 已从 Kubernetes 项目中移除。因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作为kubernetes容器运行时了,即从kubernetesv1.24开始不再使用docker了。 但是如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。cri-docker是一个支持CRI标准的shim(垫片)。一头通过CRI跟kubelet交互,另一头跟docker api交互,从而间接的实现了kubernetesdocker作为容器运行时。

4.1 下载cri-docker

到下面的链接下载最新版cri-docker

https://github.com/Mirantis/cri-dockerd/tags 

4.2 解压安装

tar zxf cri-dockerd-0.2.1.amd64.tgz 
cp cri-dockerd/cri-dockerd /usr/bin/

解压后,将文件复制到每个节点对应的目录 

scp /usr/bin/cri-dockerd 192.168.40.130:/usr/bin/
scp /usr/bin/cri-dockerd 192.168.40.131:/usr/bin/
scp /usr/bin/cri-dockerd 192.168.40.132:/usr/bin/

 4.3 配置启动文件

创建cri-docker启动文件 启动文件从下面链接找到。

https://github.com/Mirantis/cri-dockerd/tree/master/packaging/systemd

这里/usr/bin/cri-dockerd一定要加上参数 ,如下

vi /usr/lib/systemd/system/cri-docker.service
[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 --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=alwaysStartLimitBurst=3StartLimitInterval=60sLimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinityTasksMax=infinity
Delegate=yes
KillMode=process[Install]
WantedBy=multi-user.target

创建启动文件 文件内容

 /usr/lib/systemd/system/cri-docker.socket 

vi /usr/lib/systemd/system/cri-docker.socket
[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

 同步到每个节点

scp /usr/lib/systemd/system/cri-docker.service /usr/lib/systemd/system/cri-docker.socket root@192.168.40.130:/usr/lib/systemd/system/scp /usr/lib/systemd/system/cri-docker.service /usr/lib/systemd/system/cri-docker.socket root@192.168.40.131:/usr/lib/systemd/system/scp /usr/lib/systemd/system/cri-docker.service /usr/lib/systemd/system/cri-docker.socket root@192.168.40.132:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/cri-docker.socket/usr/lib/systemd/system/cri-docker.socket root@192.168.40.130:/usr/lib/systemd/system/scp /usr/lib/systemd/system/cri-docker.socket/usr/lib/systemd/system/cri-docker.socket root@192.168.40.131:/usr/lib/systemd/system/scp /usr/lib/systemd/system/cri-docker.socket/usr/lib/systemd/system/cri-docker.socket root@192.168.40.132:/usr/lib/systemd/system/

启动cri-docker并设置开机自动启动

systemctl daemon-reload ; systemctl enable cri-docker --now
#查看状态
systemctl is-active cri-docker

5、安装kubeadm(所有节点)

5.1 配置k8s阿里云源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

5.2 安装kubeadm kubelet kubectl指定版本  

#查看可安装的k8s版本
yum list kubeadm --showduplicates | sort -r
#安装1.28版本的k8s 
yum install -y kubelet-1.28.2-0 kubeadm-1.28.2-0 kubectl-1.28.2-0

5.3 设置kubelet开机自启

systemctl enable --now kubelet.service

6、初始化(master节点)

kubeadm init --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.40.129 --kubernetes-version=v1.28.2 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --upload-certs --cri-socket /var/run/cri-dockerd.sock

注意:其中 --apiserver-advertise-address=192.168.40.129 是根据你自己的master节点定。

 

按照提示创建kubeconfig文件 

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

 7、安装网络插件(master节点)

下载flannel的yml文件并创建,这里flannel.yml文件里镜像拉取地址为外网地址,构建pod时会拉取超时,这里单独下载了镜像上传到了阿里云ACR上,需要修改yml文件里的image地址。

wget https://github.com/flannel-io/flannel/releases/download/v0.24.3/kube-flannel.yml
sed -i '/ image:/s#docker.io/flannel#registry.cn-hangzhou.aliyuncs.com/luoyuxin#' kube-flannel.yml

构建flannel

kubectl create -f kube-flannel.yml
kubectl get pod -n kube-flannel

8、加入集群(各子节点)

可根据提示加入其他node,在node节点上执行下面语句,注意后面加上 --cri-socket /var/run/cri-dockerd.sock 参数

 kubeadm join 192.168.40.129:6443  --cri-socket /var/run/cri-dockerd.sock --token pr06h4.9uqcgg6aoej4uq4k \--discovery-token-ca-cert-hash sha256:2b4b622220812a7230b96c600ba595640eee991f47e64c5c11e20e71fe195f6e 

检查子节点是否已加入

kubectl get nodes

这种是命令刚执行,节点加入还在执行中,等30秒钟再看

 kubectl get nodes -o wide


http://www.ppmy.cn/devtools/119058.html

相关文章

小米笔记本电脑笔记

键盘灯不亮 出现方法&#xff1a;扣上电脑后等风扇关闭&#xff0c;再打开&#xff0c;键盘灯就打不开了。 解决方法&#xff1a;1.重启可以打开&#xff1b;2.把外接屏幕拔掉&#xff0c;键盘灯亮起&#xff0c;再接上外接屏幕。 多显示器自动改成屏幕1显示 我用外接屏幕&…

Excel的基本应用__1

1. 模拟运算 1.1 单变量求解 1.1.1 步骤 1.1.1 效果 1.2 模拟运算表 1.2.1 步骤 1.2.2 效果 2.选择性粘贴--转至 3. Excel中如何使用和定义名称 使用 相当于全局变量&#xff0c;可以在不同表中调用 3.1名称中使用常量 3.2名称中使用函数 调用 可以在不同的表中调用 3.…

面试知识点总结篇二

一、makefile链接库参数 LIBS -L/path/to/lib -lmylib//&#xff0c;-lmylib会链接名为libmylib.so或libmylib.a的库。all: myprogrammyprogram: myprogram.ogcc -o myprogram myprogram.o $(LIBS)//此处使用myprogram.o: myprogram.cgcc -c myprogram.c二、shell指令 Shell…

Spring Boot房屋租赁系统:开发者手册

2 关键技术简介 2.1 JAVA技术 Java是一种多用途并且强大的编程语言&#xff0c;可用于开发运行在移动设备、台式计算机以及服务器端的软件。Java已及其流行。Java只要编写一次&#xff0c;无论什么地方都可以运行启动[1]。 Java语言是应用很广泛的语言&#xff0c;用它编写出的…

网络安全(黑客技术)-2024自学手册

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性…

Tomcat系列漏洞复现

CVE-2017-12615——Tomcat put⽅法任意⽂件写⼊漏洞 漏洞描述 当 Tomcat运⾏在Windows操作系统时&#xff0c;且启⽤了HTTP PUT请求⽅法&#xff08;例如&#xff0c;将 readonly初始化参数由默认值设置为false&#xff09;&#xff0c;攻击者将有可能可通过精⼼构造的攻击请求…

Vue3 取消密码输入框在浏览器中自动回填

浏览器默认会对用户提交表单行为进行监控&#xff0c;若发现type属性值为password的input控件&#xff0c;且该控件可见时&#xff0c;会提示用户是否记住密码 VUE3登录禁止浏览器记住密码_vue3禁止chome浏览器提示保存密码-CSDN博客 项目需求&#xff1a; 前端禁止在浏览器coo…

Python爬虫爬取王者荣耀英雄信息并保存到图数据库

爬取信息说明 英雄名称英雄类型英雄包含的所有皮肤名称 创建英雄类型节点 王者荣耀官方给出的英雄类型是以下几种&#xff1a; 直接准备好英雄类型词典 hero_type_dict [战士, 法师, 坦克, 刺客, 射手, 辅助 ]添加到图数据库中 def create_hero_type_node():for hero_ty…