Debian与Kubernetes集成的核心流程及关键配置
Debian系统与Kubernetes的集成主要通过kubeadm工具实现,以下是详细的步骤指南及关键注意事项:
sudo apt update && sudo apt upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/1/g' /etc/fstab
master-node、worker-node1),并编辑/etc/hosts文件,添加节点IP与主机名映射:192.168.1.10 master-node
192.168.1.11 worker-node1
Kubernetes依赖容器运行时,推荐使用Docker(社区最常用):
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
安装kubelet(节点代理)、kubeadm(集群初始化工具)、kubectl(命令行工具):
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本,避免自动升级
在Master节点上执行以下命令,初始化Kubernetes控制平面:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # 指定Pod网络CIDR(需与后续网络插件匹配)
初始化完成后,会输出加入Worker节点的命令(包含Token和CA证书哈希),需保存备用。
将Master节点的Kubernetes配置文件复制到当前用户目录,用于后续管理集群:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Kubernetes需要网络插件实现Pod间通信,推荐使用Flannel(轻量易用):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安装后,检查网络插件状态:
kubectl get pods -n kube-system # 应显示flannel相关Pod为Running状态
在每台Worker节点上,使用Master节点初始化时输出的命令执行:
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
加入后,Master节点会自动识别Worker节点。
kubectl get nodes
若所有节点状态为Ready,则说明集成成功。kubectl create deployment nginx-app --image=nginx --replicas=2
kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80
curl http://<master-ip>:<node-port> # 替换<node-port>为`kubectl get svc nginx-web-svc`输出的端口
若需构建高可用集群,需:
kube-apiserver、kube-controller-manager、kube-scheduler的高可用;kubeadm的--control-plane-endpoint参数指定Etcd集群地址;以上步骤覆盖了Debian与Kubernetes集成的核心流程,实际部署时需根据环境调整网络插件(如Calico、Weave Net)、存储配置等参数。建议参考Kubernetes官方文档获取最新版本信息。