在CentOS上完成Kubernetes(k8s)安裝后,網絡配置是確保集群正常運行的關鍵步驟,主要包括基礎環境準備、網絡插件安裝及網絡策略配置三部分。
在配置網絡前,需完成以下基礎設置,避免網絡沖突或權限問題:
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab # 永久禁用
/etc/sysconfig/network-scripts/ifcfg-ens33,接口名以ip a命令為準):TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100 # 節點靜態IP
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
重啟網絡服務使配置生效:systemctl restart network
/etc/hosts文件添加集群節點信息:hostnamectl set-hostname k8s-master # 主節點
# 或 hostnamectl set-hostname k8s-node1 # 子節點
echo "192.168.1.100 k8s-master" >> /etc/hosts
echo "192.168.1.101 k8s-node1" >> /etc/hosts
chrony并啟動:yum install -y chrony && systemctl enable chronyd && systemctl start chronyd
Kubernetes依賴CNI(Container Network Interface)插件實現Pod間通信,常用插件包括Flannel(簡單易用)和Calico(高性能、支持網絡策略)。
Flannel提供overlay網絡(VXLAN模式),適合小規模集群,配置簡單:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
驗證插件狀態:
kubectl get pods -n kube-system | grep flannel # 應顯示"Running"狀態
Calico采用純三層轉發(無overlay),性能更優且支持網絡策略(NetworkPolicy),適合大規模集群:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
驗證插件狀態:
kubectl get pods -n kube-system | grep calico # 應顯示"Running"狀態
網絡策略用于控制Pod間的訪問權限,提升集群安全性。以下是一個允許同一命名空間內所有Pod互相訪問的示例:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
namespace: default # 作用于default命名空間
spec:
podSelector: {} # 匹配所有Pod
policyTypes:
- Ingress # 控制入站流量
- Egress # 控制出站流量
ingress:
- from:
- podSelector: {} # 允許同一命名空間內的Pod訪問
egress:
- to:
- podSelector: {} # 允許訪問同一命名空間內的Pod
應用策略:
kubectl apply -f network-policy.yaml
Ready狀態:kubectl get nodes
kubectl run test-pod --image=nginx --restart=Never --rm -it -- /bin/sh
# 在Pod內執行:ping <另一個Pod的IP> 或 curl <另一個Pod的IP>:80
通過以上步驟,可完成CentOS系統下Kubernetes的網絡配置,確保集群內Pod間通信正常。根據實際需求選擇合適的網絡插件,并通過NetworkPolicy強化網絡安全。