在CentOS上部署Kubernetes(k8s)时,配置网络是一个关键步骤。以下是配置网络的详细步骤:
确保系统更新:
sudo yum update -y
安装必要的软件包:
sudo yum install -y kubeadm kubelet kubectl docker
启动并启用Docker服务:
sudo systemctl start docker
sudo systemctl enable docker
配置Docker以使用overlay2
网络驱动:
编辑/etc/docker/daemon.json
文件,添加以下内容:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
然后重启Docker服务:
sudo systemctl restart docker
初始化主节点:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
这个CIDR块用于Pod网络,确保它不与你的其他网络冲突。
设置kubectl上下文:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装网络插件:
推荐使用Calico
作为网络插件,因为它性能优越且易于配置。
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
kubectl run nginx --image=nginx --port=80 --dry-run=client -o yaml | kubectl apply -f -
kubectl get pods
然后尝试访问Pod的IP地址或通过NodePort访问Nginx服务。获取加入令牌: 在主节点上运行以下命令获取加入令牌:
kubeadm token create --print-join-command
在工作节点上执行加入命令: 将上述命令的输出复制到工作节点上并执行,例如:
sudo kubeadm join <MASTER_NODE_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
检查所有节点的状态:
kubectl get nodes
检查Pod的状态:
kubectl get pods --all-namespaces
如果你需要更细粒度的网络控制,可以配置Calico的网络策略。
通过以上步骤,你应该能够在CentOS上成功部署并配置Kubernetes集群的网络。如果有任何问题,请参考Kubernetes和Calico的官方文档进行排查。