在CentOS下配置Kubernetes(k8s)網絡時,有幾個關鍵步驟和技巧需要注意。以下是一些建議和最佳實踐,幫助你順利完成網絡配置。
配置主機名和hosts文件:
在所有節點上設置主機名,并配置hosts文件以確保節點之間的解析正確。
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
# 編輯 /etc/hosts 文件
vim /etc/hosts
192.168.19.231 k8s-master
192.168.19.232 k8s-node1
192.168.19.233 k8s-node2
配置網絡接口:
編輯網絡配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0),設置靜態IP地址、子網掩碼、網關和DNS服務器。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
sudo systemctl restart network
關閉防火墻和SELinux:
為了簡化網絡配置,可以暫時關閉防火墻和SELinux。
sudo systemctl disable --now firewalld
sudo sed -i 's/SELINUX=enforcing/disabled/' /etc/selinux/config
Kubernetes支持多種網絡插件,如Flannel、Calico和Cilium。這里以Flannel為例進行介紹。
安裝Flannel網絡插件:
下載Flannel的YAML文件并使用kubectl命令進行安裝。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
驗證網絡插件配置:
檢查Flannel的Pod運行狀態,并測試Pod之間的通信和外部網絡通信。
kubectl get pods -n kube-system -l k8s-app=flannel
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl run busybox --rm -ti --image=busybox /bin/sh
wget -qO- http://<nginx-service-ip>:80
Kubernetes網絡策略用于控制Pod之間的網絡通信,確保集群的安全性。
定義網絡策略:
創建一個NetworkPolicy資源,定義Pod之間的通信規則。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: example-network-policy
spec:
podSelector:
matchLabels:
app: example
policyTypes:
- Ingress
- Egress
egress:
- to:
- ipBlock:
cidr: 172.17.0.0/16
應用網絡策略:
kubectl apply -f network-policy.yaml
以上步驟涵蓋了在CentOS下配置Kubernetes網絡的基本流程和技巧。確保網絡配置正確并選擇合適的網絡插件,可以提高集群的性能和安全性。根據實際需求調整網絡策略,以適應不同的業務場景和安全要求。