在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网络的基本流程和技巧。确保网络配置正确并选择合适的网络插件,可以提高集群的性能和安全性。根据实际需求调整网络策略,以适应不同的业务场景和安全要求。