在Debian上配置Kubernetes(K8s)网络通常涉及设置Pod网络,以便集群中的Pod能够相互通信。以下是一个基本的步骤指南,帮助你在Debian上为Kubernetes集群配置网络。
首先,你需要在每个节点上设置主机名,并在/etc/hosts
文件中添加相应的条目以确保主机名解析正确。
sudo hostnamectl set-hostname "k8s-master01"
echo "192.168.16.20 k8s-master01.test.local k8s-master01" | sudo tee -a /etc/hosts
sudo hostnamectl set-hostname "k8s-node01"
echo "192.168.16.21 k8s-node01.test.local k8s-node01" | sudo tee -a /etc/hosts
sudo hostnamectl set-hostname "k8s-node02"
echo "192.168.16.22 k8s-node02.test.local k8s-node02" | sudo tee -a /etc/hosts
为了确保kubelet顺利运行,建议禁用swap分区。
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
如果你的Debian系统已启用操作系统防火墙,请允许必要的端口。
sudo ufw allow 6443/tcp
sudo ufw allow 2379/tcp
sudo ufw allow 2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10251/tcp
sudo ufw allow 10252/tcp
sudo ufw allow 10255/tcp
sudo ufw reload
在所有节点上安装containerd运行时,并设置必要的内核参数。
sudo apt update
sudo apt install -y containerd
cat <<eof | sudo tee /etc/modules-load.d/containerd.conf
overlaybr_netfilter
eof
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<eof | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
eof
sudo sysctl --system
在所有节点上安装kubeadm、kubelet和kubectl。
sudo apt update
sudo apt install -y apt-transport-https curl
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
在主节点上使用kubeadm初始化集群,并安装网络插件(例如Calico)。
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
在主节点上配置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或其他网络插件的YAML文件。
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
kubectl apply -f calico.yaml
验证网络配置是否成功,例如通过部署一个简单的Nginx部署并测试Pod之间的通信。
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://<node-ip>:31743
通过以上步骤,你应该能够在Debian上成功配置Kubernetes集群的网络。根据具体需求,你可能还需要调整网络策略和防火墙规则。