Kubernetes v1.24集群安裝配置步驟總結
一、環境準備
(一)系統要求
- 運行兼容deb/rpm的Linux操作系統(如Ubuntu或CentOS)的計算機,1臺或多臺。
- 每臺機器內存2GB以上,內存不足會限制應用運行。
- 控制平面節點的計算機至少有2個CPU。
- 集群中所有計算機之間有完全的網絡連接,可使用公共網絡或專用網絡。
(二)主機環境配置(以Ubuntu 20.04為例)
- 系統安裝
- 下載Ubuntu 20.04.4鏡像:https://mirrors.aliyun.com/ubuntu-releases/20.04.4/ubuntu-20.04.4-live-server-amd64.iso。
- 修改鏡像源
- 將默認鏡像源
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
- 下載對應版本
- 根據內核信息從GitHub Release頁面選擇文件,例如:https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz。
- 下載并解壓:
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 # 查看可用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"] }
- 重啟Docker:
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 # 臨時關閉 # 修改/etc/fstab,注釋掉swap相關行
- 修改主機名(以k8s-master1為例)
- 添加IP映射到
/etc/hosts
:
127.0.1.1 k8s-master1
- 修改系統主機名:
sudo hostnamectl set-hostname k8s-master1 hostname # 查看主機名
- 添加IP映射到
五、初始化Master節點(只在master節點做)
- 生成默認配置文件
kubeadm config print init-defaults > init.default.yaml
- 修改配置文件
init.default.yaml
- 添加或修改以下內容:
localAPIEndpoint:advertiseAddress: 192.168.88.133 # 替換為實際IP nodeRegistration:criSocket: unix:///var/run/cri-dockerd.sockname: k8smaster # 替換為主機名 imageRepository: registry.aliyuncs.com/google_containers # 國內鏡像源 kubernetesVersion: 1.24.1 networking:podSubnet: 10.244.0.0/16 # flannel默認網絡段
- 拉取鏡像
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
- root用戶執行:
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 # 修改mode: "ipvs" 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