Kubernetes v1.24集群安装配置步骤总结
一、环境准备
(一)系统要求
运行兼容deb/rpm的Linux操作系统(如Ubuntu或CentOS)的计算机,1台或多台。 每台机器内存2GB以上,内存不足会限制应用运行。 控制平面节点的计算机至少有2个CPU。 集群中所有计算机之间有完全的网络连接,可使用公共网络或专用网络。
(二)主机环境配置(以Ubuntu 20.04为例)
系统安装
修改镜像源
将默认镜像源http://cn.archive.ubuntu.com/ubuntu
修改为清华大学镜像源https://mirrors.tuna.tsinghua.edu.cn/ubuntu
。 修改方式 :
安装虚拟机时直接修改镜像地址。 已安装系统时,修改/etc/apt/sources.list
文件,替换地址后执行sudo apt-get update
(修改前先备份文件)。 安装Docker 20.10.17
二、安装cri-dockerd容器运行时
(一)方式一:二进制文件下载安装
查看内核信息 cat /proc/version
下载对应版本
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz
tar -zxvf cri-dockerd-0.3.1.amd64.tgz -C /tmp
sudo cp /tmp/cri-dockerd/cri-dockerd /usr/bin/
(二)方式二:通过Docker构建
下载源码并编译 git clone https://github.com/Mirantis/cri-dockerd.git
cd cri-dockerd
git tag
git checkout v0.3.1
创建Dockerfile并构建 FROM golang:1.18
ADD ./ /go/src/cri-dockerd
WORKDIR /go/src/cri-dockerd
RUN go env -w GOPROXY=https://proxy.golang.com.cn,https://goproxy.cn,direct
RUN go build -o cri-dockerd
docker build -t cri-dockerd:latest .
docker run --rm -d -it --name cri-dockerd cri-dockerd:latest bash
docker cp cri-dockerd:/go/src/cri-dockerd/cri-dockerd ./
sudo cp cri-dockerd /usr/bin/
(三)配置和启动cri-dockerd服务
获取systemd配置文件 git clone https://github.com/Mirantis/cri-dockerd.git
sudo cp cri-dockerd/packaging/systemd/* /etc/systemd/system/
修改服务配置
在/etc/systemd/system/cri-docker.service
的ExecStart
字段中添加: --network-plugin= cni --pod-infra-container-image= registry.aliyuncs.com/google_containers/pause:3.7
启动服务 sudo systemctl daemon-reload
sudo systemctl enable cri-docker
sudo systemctl start cri-docker
sudo systemctl status cri-docker
三、安装kubeadm、kubelet、kubectl
更新包管理器并安装依赖 sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
下载gpg密钥 curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
设置Kubernetes镜像源 echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
安装指定版本(示例:1.24.1) sudo apt-get update
sudo apt-get install -y kubelet = 1.24 .1-00 kubeadm = 1.24 .1-00 kubectl = 1.24 .1-00
锁定版本(防止自动升级) sudo apt-mark hold kubelet kubeadm kubectl
检查kubelet状态 systemctl status kubelet
四、主机环境调整
修改Docker的cgroup driver为systemd
创建或修改/etc/docker/daemon.json
,添加: {
"exec-opts" : [ "native.cgroupdriver=systemd" ]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
关闭防火墙 sudo systemctl stop firewalld
sudo systemctl disable firewalld
禁用SELinux sudo apt install selinux-utils
getenforce
sudo setenforce 0
禁用swap free
sudo swapoff -a
修改主机名(以k8s-master1为例)
127.0 .1.1 k8s-master1
sudo hostnamectl set-hostname k8s-master1
hostname
五、初始化Master节点
生成默认配置文件 kubeadm config print init-defaults > init.default.yaml
修改配置文件init.default.yaml
localAPIEndpoint :
advertiseAddress : 192.168.239.146
nodeRegistration :
criSocket : unix: ///var/run/cri- dockerd.sock
name : k8s- master1
imageRepository : registry.aliyuncs.com/google_containers
kubernetesVersion : 1.24.1
networking :
podSubnet : 10.244.0.0/16
拉取镜像 sudo kubeadm config images pull --config = init.default.yaml
初始化集群 sudo kubeadm init --config = init.default.yaml
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version= v1.24.1 --pod-network-cidr= 10.244 .0.0/16 --apiserver-advertise-address= 192.168 .239.146 --cri-socket unix:///var/run/cri-dockerd.sock
配置kubectl
mkdir -p $HOME /.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME /.kube/config
sudo chown $( id -u ) : $( id -g ) $HOME /.kube/config
export KUBECONFIG = /etc/kubernetes/admin.conf
source /etc/profile
六、添加网络组件(以flannel为例)
下载或应用配置文件
wget https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
解决域名解析异常(若出现)
查询raw.githubusercontent.com
的IP地址(如185.199.108.133),添加到/etc/hosts
: 185.199 .108.133 raw.githubusercontent.com
开启kube-proxy的ipvs模式 kubectl edit -n kube-system cm kube-proxy
kubectl rollout restart -n kube-system daemonset kube-proxy
查看集群状态 kubectl get pod --all-namespaces
kubectl get node
kubectl get cs
七、Node节点初始化与加入集群
(一)环境安装(同Master节点)
安装Docker和cri-dockerd并启动服务。 安装kubeadm、kubelet、kubectl。
(二)节点环境修改(同Master节点)
修改Docker的cgroup driver。 关闭防火墙、禁用SELinux和swap。
(三)加入集群
在Master节点获取加入命令 sudo kubeadm token create --print-join-command
在Node节点执行加入命令(附加cri-socket参数) kubeadm join 192.168 .239.146:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:bac9b53b18b0bfcb3b923f970771e48d489ed7c77625c8fa3785608c6f191a79 --cri-socket unix:///var/run/cri-dockerd.sock
八、重置节点(可选)
sudo kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
sudo rm -rf /var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/cni /etc/cni/net.d $HOME /.kube/config
sudo ipvsadm --clear
sudo ifconfig cni0 down
sudo ip link delete cni0
https://github.com/0voice