Title

ubuntu部署kubernetesV1.27+containerd

 

 

 

 

本文中如果有的依赖没办法用apt-get安装,可以直接访问我的网盘,用tar包安装

链接:https://pan.baidu.com/s/1hiozH7KPqKa6IbwBIPb7Ng?pwd=8s4i

提取码:8s4i

 

1、登录节点使用 hostnamectl 命令设置 hostname(所有主机)

例:hostnamectl set-hostname k8s-master

 

2、在每个节点上的 /etc/hosts 文件中添加以下内容(所有主机操作)

172.18.10.11   k8s-master

172.18.10.12   k8s-worker1

172.18.10.13   k8s-worker2

 

3、禁用 swap & 添加内核设置(所有主机操作)

swapoff -a

sed -i '/swap/ s%/swap%#/swap%g' /etc/fstab

 

4、在所有节点上加载以下内核模块(所有主机操作)

tee /etc/modules-load.d/containerd.conf <<EOF

overlay

br_netfilter

EOF

modprobe overlay

modprobe br_netfilter

 

5、 Kubernetes 设置以下内核参数,运行如下的tee命令(所有主机操作)

tee /etc/sysctl.d/kubernetes.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

使其生效(所有主机操作)

sysctl --system

 

6、安装容器运行时依赖项(所有主机操作)

apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

 

7、启用 docker 存储库(所有主机操作)

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

 

add-apt-repository "deb [arch=amd64] Index of linux/ubuntu/ $(lsb_release -cs) stable"

 

8、安装 containerd(所有主机操作)

apt update

apt install -y containerd.io(如果报错找不到containerd.io,那就用tar包去装,如果没报错正常安装上了,那就可以跳过下面实线内的步骤

tar Cxzvf /usr/local containerd-1.7.0-linux-amd64.tar.gz

 

#创建启动containerd的systemd服务

cat << EOF >> /lib/systemd/system/containerd.service

[Unit]

Description=containerd container runtime

Documentation=https://containerd.io

After=network.target local-fs.target

 

[Service]

ExecStartPre=-/sbin/modprobe overlay

ExecStart=/usr/local/bin/containerd

 

Type=notify

Delegate=yes

KillMode=process

Restart=always

RestartSec=5

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNPROC=infinity

LimitCORE=infinity

LimitNOFILE=infinity

# Comment TasksMax if your systemd version does not supports it.

# Only systemd 226 and above support this version.

TasksMax=infinity

OOMScoreAdjust=-999

 

[Install]

WantedBy=multi-user.target

EOF

到这里tar包安装就结束了,回归正常的配置步骤

 

9、配置 containerd使它使用 systemd 作为 cgroup(所有主机操作)

mkdir -p /etc/containerd

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

 

10、将镜像地址换为阿里云地址,否者在初始化时无法拉取到镜像(所有主机操作)

sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml

重启并启用 containerd 服务

systemctl daemon-reload

systemctl restart containerd

systemctl enable containerd

 

手动执行一下crictl命令,看能否使用,出现一下情况代表containerd有问题

 在/etc下编辑crictl.yaml文件

runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false

 

在执行crictl命令

 

12、添加 Kubernetes apt 存储库下载 Google Cloud 公开签名秘钥(master操作)

curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

此操作需要看脸,若脸黑访问不到的话,直接用我网盘里的apt-key.gpg

 

手动cp一下

cp ~/apt-key.gpg  /usr/share/keyrings/kubernetes-archive-keyring.gpg   

 

安装Kubectl, kubeadm 和 kubelet(所有主机操作)

# 安装基础环境

apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl

curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

 

# 执行配置k8s阿里云源  

vim /etc/apt/sources.list.d/kubernetes.list

#加入以下内容

deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

 

# 执行更新

apt-get update -y

1.1安装最新的工具

apt-get install -y kubelet kubeadm kubectl

1.2安装指定版本的kubeadm工具

apt-get install -y kubeadm=1.27.4-00 kubelet=1.27.4-00 kubectl=1.27.4-00

 查看版本

dpkg -l | grep kube

 

锁定版本,不让k8s组件自动升级(所有主机操作)

apt-mark hold kubelet kubeadm kubectl

 

15、修改containerd的沙盒(master操作)

vi /etc/containerd/config.toml

 

更新配置并重启

systemctl daemon-reload

systemctl restart containerd

systemctl enable containerd

systemctl status containerd

 

把runc授权放到/usb/bin下

chmod 777 runc.amd64

mv runc.amd64 /usr/bin/runc
 

16、初始化kubernetes集群(master操作)

kubeadm init --image-repository registry.aliyuncs.com/google_containers  --apiserver-advertise-address=172.18.10.11 --kubernetes-version v1.27.1 --pod-network-cidr=10.244.0.0/16 --v=5

 

如果初始化失败,重新初始化前需要执行kubeadm reset -f来清除初始化失败的文件

用初始化完成后的命令加入node节点(node操作)

kubeadm join k8s-master:6443 --token 04bkvu.6yc4clf05z009t1b --discovery-token-ca-cert-hash sha256:088e804bb2658add7bfd6f6620beb0f6df5307c3371a7d623f8563b5ac30347d

查看node状态(NotReady是正常的,后续装完网络插件就好了)

 

 

如果以后需要添加新的node,需要重新生成新的token以及公钥哈希值

kubeadm token create --print-join-command

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^ .* //'

kubeadm join 192.168.80.137:6443 --token 新生成的Token填写此处 --discovery-token-ca-cert-hash sha256:获取的公钥哈希值填写此处

17、在主节点安装flannel网络插件(master操作)

curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果无法下载flannel的yaml,那就用我网盘的直接apply执行就可以了

kubectl apply -f kube-flannel.yml

查看节点和pod都已经Running了

 

 

 

19、在主节点输入集群交互命令,不执行的话,node节点无法使用kubectl(所有主机操作)

mkdir -p $HOME/.kube

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

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

 

剔除节点

 kubectl drain 节点名 --delete-local-data --force --ignore-daemonsets

 

 kubectl delete nodes 节点名

 

前往节点执行清除

apt-get purge   --auto-remove containerd.io

 

kubeadm reset -f

 

modprobe -r ipip

rm -rf ~/.kube/

rm -rf /etc/kubernetes/

rm -rf /etc/systemd/system/kubelet.service.d

rm -rf /etc/systemd/system/kubelet.service

rm -rf /usr/bin/kube*

rm -rf /etc/cni

rm -rf /opt/cni

rm -rf /var/lib/etcd

rm -rf /var/etcd

apt clean all

apt remove kube*

 

dpkg -l | grep kube

 

apt-get remove  --purge kubernetes-cni

apt-get remove --purge kubeadm

apt-get remove --purge kubectl

apt-get remove --purge kubelet

 

find / -name kube'*' -delete

find / -name kube'*' | xargs rm -rf

find / -name kube'*' | xargs rmdir

 

到此结束!!!

 

补充:安装指定版本的kubelet、kubeadm、kubectl使用命令

 apt-get install -y kubeadm=1.27.4-00

apt-get install -y kubelet=1.27.4-00

apt-get install -y kubectl=1.27.4-00

 

 

 

 

 

 

 

posted @ 2023-12-19 15:51  Esurts~  阅读(79)  评论(0编辑  收藏  举报