在Debian下部署Kubernetes(K8s)集群时,有几个关键的注意事项需要考虑,以确保集群的稳定性和安全性。以下是一些主要的注意事项:
-
关闭Swap分区:
- Kubernetes 1.8及以上版本要求关闭Swap分区。可以通过以下命令临时禁用Swap:
sudo swapoff -a
- 为了永久禁用Swap,可以编辑
/etc/fstab
文件,注释掉包含 “swap” 的行。
- Kubernetes 1.8及以上版本要求关闭Swap分区。可以通过以下命令临时禁用Swap:
-
配置内核参数:
- 启用IPv4转发:
sudo tee /etc/sysctl.d/k8s.conf <
- 配置网络参数,例如
net.bridge.bridge-nf-call-iptables
和net.bridge.bridge-nf-call-ip6tables
:sudo tee /etc/sysctl.d/k8s.conf <
- 启用IPv4转发:
-
禁用强制访问控制(MAC)和防火墙:
- 关闭系统(AppArmor)和防火墙(如
ufw
):sudo systemctl stop apparmor sudo systemctl disable apparmor sudo systemctl stop firewalld sudo systemctl disable firewalld
- 或者配置相应的规则以允许Kubernetes所需的端口。
- 关闭系统(AppArmor)和防火墙(如
-
选择合适的容器运行时:
- Kubernetes 1.20版本不再支持Docker作为容器运行时。推荐使用containerd或CRI-O。以下是安装containerd的步骤:
sudo apt update 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 [archamd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list sudo apt-get update sudo apt install -y containerd sudo systemctl enable containerd sudo systemctl start containerd
- Kubernetes 1.20版本不再支持Docker作为容器运行时。推荐使用containerd或CRI-O。以下是安装containerd的步骤:
-
配置kubelet:
- 确保kubelet配置正确,例如:
sudo mkdir -p /etc/systemd/system/kubelet.service.d sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf <
- 确保kubelet配置正确,例如:
-
网络插件选择:
- 选择合适的网络插件,例如Calico:
wget https://docs.projectcalico.org/manifests/calico.yaml kubectl apply -f calico.yaml
- 选择合适的网络插件,例如Calico:
-
避免环境变量过多:
- 在Pod的spec中配置
enableServiceLinks: false
,以避免svc相关信息注入到Pod中,导致启动失败。
- 在Pod的spec中配置
-
Pod标签管理:
- 避免使用会在Pod生命周期中变化标签,以免在修改标签时导致Pod无法修改。
-
版本兼容性和升级策略:
- K8S版本向下兼容性差,建议跨版本升级要慎重。建议分多个集群部署,先升级非核心应用集群。
-
监控和日志:
- 配置监控和日志系统,以便及时发现和解决问题。可以使用Prometheus和Grafana进行监控,使用ELK(Elasticsearch, Logstash, Kibana)堆栈进行日志管理。
通过遵循这些注意事项,可以显著提高在Debian下部署Kubernetes集群的成功率和稳定性。确保每个步骤都仔细执行,并根据实际情况进行调整和优化。