Ubuntu/Debian 安装 K8S 集群
安装 Docker
这里使用作者镜像的安装脚本,安装 Docker,并使用清华源。
bash
curl -O https://docs.alexsun.top/public/debian-basic.sh
chmod +x debian-basic.sh
sudo ./debian-basic.sh --update --docker --docker-socket -M tuna
配置 containerd
使用 systemd
作为 cgroup 驱动。
bash
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
配置系统
禁用交换空间:
bash
sudo swapoff -a
需要注释 /etc/fstab
所有的 swap 行。
bash
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
这一步需要手动检查,如果还有没注释的内容需要删除,许多系统的 swap 配置不同:
bash
sudo vim /etc/fstab
安装 K8S
这里使用清华镜像:
bash
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/kubernetes/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet=1.28.15-1.1 kubeadm=1.28.15-1.1 kubectl=1.28.15-1.1
sudo apt-mark hold kubelet kubeadm kubectl
配置系统网桥:
bash
sudo modprobe br_netfilter
echo 'br_netfilter' | sudo tee /etc/modules-load.d/k8s.conf
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
检查是否安装成功:
bash
cat /proc/sys/net/bridge/bridge-nf-call-iptables
cat /proc/sys/net/ipv4/ip_forward
初始化集群
【注意】以下步骤仅需要在 master 节点执行。
初始化集群:
bash
sudo kubeadm init \
--pod-network-cidr=10.66.210.0/24 \
--apiserver-advertise-address=10.66.210.175 \
--control-plane-endpoint=10.66.210.175
如果成功,请留意输出的 kubeadm join
命令,稍后需要在 worker 节点执行。
配置 kubectl
:
bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装 Calico 网络插件:
bash
curl https://raw.githubusercontent.com/projectcalico/calico/v3.30.0/manifests/calico.yaml -O
通常 Calico 会自动拉取镜像,但在中国大陆可能会失败,此时建议配置镜像:
bash
sed -i 's#docker.io/#swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/#g' calico.yaml
应用 Calico:
bash
kubectl apply -f calico.yaml
加入 Worker 节点
在 worker 节点执行 kubeadm join
命令,此命令可直接复制上述输出的命令。
测试
测试集群是否正常:
bash
kubectl get nodes -o wide
kubectl get pods -n kube-system -o wide
检查某个 Pod 是否正常:
bash
kubectl describe pod -n kube-system $POD_NAME
删除 Pod:
bash
kubectl delete pod -n kube-system $POD_NAME