以下是在CentOS上部署Kubernetes(k8s)时的网络配置技巧及关键步骤:
静态IP设置
编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33
),配置静态IP、子网掩码、网关和DNS,示例:
DEVICE=ens33
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
重启网络服务生效:systemctl restart network
。
关闭防火墙与SELinux
systemctl stop firewalld && systemctl disable firewalld
。/etc/selinux/config
,设置SELINUX=disabled
。配置主机名与hosts文件
使用hostnamectl set-hostname <节点名>
设置主机名,并在/etc/hosts
中添加集群节点IP与主机名映射,确保节点间解析正确。
编辑/etc/sysctl.d/k8s.conf
,添加以下参数以支持网络转发和桥接:
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
加载配置:sysctl --system
。
K8s需借助网络插件实现Pod间通信,常见插件及部署方式:
Flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
。kubectl get pods -n kube-system -l k8s-app=flannel
。Calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
。Cilium
helm install cilium cilium/cilium
。定义网络策略
使用NetworkPolicy
资源控制Pod间通信,示例(限制特定命名空间流量):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-external
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels:
project: internal
应用策略:kubectl apply -f network-policy.yaml
。
测试网络连通性
kubectl exec
进入Pod,使用ping
或curl
验证与其他Pod或节点的通信。kubectl get pods -n kube-system
,确保无异常。注意事项:
参考来源: