在CentOS上部署Kubernetes(k8s)时,网络配置是一个关键步骤。以下是一些网络配置的要点:
Kubernetes使用CNI(Container Network Interface)插件来管理容器网络。常用的CNI插件包括Flannel、Calico等。这些插件提供了不同的网络模型,如VLAN、VXLAN等。
在每个节点上配置静态IP地址,确保网络通信的稳定性和可预测性。
# 编辑网络配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 配置示例
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=d90cbc3c-ba5e-4a72-8f7e-a5ae8c48158a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.8.106
NETMASK=255.255.255.0
GATEWAY=192.168.8.1
DNS1=8.8.8.8
DNS2=114.114.114.114
关闭防火墙和SELinux以减少安全风险。
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Kubernetes提供了NetworkPolicy资源,用于定义Pod之间的网络访问策略。
# 示例NetworkPolicy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5978
根据选择的网络插件,配置相应的CNI插件。
# 编辑Flannel配置文件
vi /etc/sysconfig/flanneld
# 配置示例
FLANNEL_ETCD="etcd.example.com:2379"
# 编辑Calico配置文件
vi /etc/calico/calico.yaml
# 配置示例
network:
ip4Pool: 10.244.0.0/16
使用以下命令验证网络配置是否成功。
# 检查Pod状态
kubectl get pods
# 检查Service状态
kubectl get services
通过以上步骤,您可以在CentOS上成功配置Kubernetes的网络,确保集群中的Pod能够正常通信。根据具体需求选择合适的网络插件和配置方式,以满足不同的网络需求。