在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强化网络安全。