在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能夠正常通信。根據具體需求選擇合適的網絡插件和配置方式,以滿足不同的網絡需求。