在Debian上安装Kubernetes(K8s)集群的步骤如下:
准备工作
-
硬件要求:
- 2核CPU / 2 vCPU
- 2 GB RAM
- 20 GB硬盘空间
- 具有管理权限的sudo用户
- 稳定的互联网连接
-
实验环境:
- 可以在VMware Workstation等虚拟机软件上创建多个虚拟机并安装Debian操作系统。
安装步骤
-
设置主机名及更新hosts文件:
- 登录每个节点(主控和工作节点),使用
hostnamectl
命令设置它们的主机名。 - 在所有节点的
/etc/hosts
文件中添加节点IP和主机名的映射。
- 登录每个节点(主控和工作节点),使用
-
关闭所有节点的swap分区:
- 运行
sudo swapoff -a
关闭交换分区。 - 编辑
/etc/fstab
文件,注释掉swap对应的行。
- 运行
-
为K8s集群添加防火墙规则:
-
如果Debian系统已启用操作系统防火墙,允许以下端口:
- 主控节点:6443/tcp, 2379/tcp, 2380/tcp, 10250/tcp, 10251/tcp, 10252/tcp, 10255/tcp
- 工作节点:10250/tcp, 30000:32767/tcp
-
重载防火墙配置:
sudo ufw reload
。
-
-
在所有节点上安装containerd运行时:
-
设置内核参数:
cat <
-
安装containerd:
sudo apt update sudo apt install -y containerd
-
配置containerd:
sudo containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
-
-
在所有节点上安装Kubernetes工具:
-
添加Kubernetes apt仓库:
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
-
-
使用kubeadm安装Kubernetes集群:
-
初始化主控节点(master节点):
sudo kubeadm init --apiserver-advertise-address
--image-repository registry.aliyuncs.com/google_containers --kubernetes-version --service-cidr --pod-network-cidr -
在主控节点上配置kubectl:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
在其他工作节点上加入集群:
sudo kubeadm join
:6443 --token --discovery-token-ca-cert-hash sha256:
-
-
使用Calico设置Pod网络(可选):
-
下载Calico配置文件:
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
-
应用Calico配置:
kubectl apply -f calico.yaml
-
开放Calico端口(如果防火墙启用):
sudo ufw allow 179/tcp sudo ufw allow 4789/udp sudo ufw allow 51820/udp sudo ufw allow 51821/udp sudo ufw reload
-
-
验证集群:
-
使用以下命令检查节点状态:
kubectl get nodes
-
部署一个测试应用(如Nginx)并验证:
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 kubectl describe svc nginx-web-svc curl http://
:31743
-
请注意,以上步骤可能会根据具体的Kubernetes版本和Debian版本有所不同。建议参考最新的官方文档以获取最准确的信息。