在CentOS环境下配置Kubernetes(k8s)网络,通常需要以下几个步骤:
首先,你需要安装Kubernetes集群。可以使用kubeadm工具来快速搭建一个单节点或多节点的Kubernetes集群。
sudo yum install -y kubeadm kubelet kubectl --disable-gpg-check
sudo systemctl enable kubelet
sudo systemctl start kubelet
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
--pod-network-cidr:指定Pod网络的CIDR范围。初始化完成后,会输出一些信息,包括如何将当前用户添加到kubelet组以及如何配置kubectl。
Kubernetes需要一个网络插件来管理Pod之间的通信。常用的网络插件有Calico、Flannel、Weave等。
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
kubectl get pods -n kube-system | grep calico
你应该能看到Calico的Pod正在运行。
网络策略用于控制Pod之间的通信。Calico支持基于标签的网络策略。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
spec:
podSelector:
matchLabels:
app: myapp
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: myapp
ports:
- protocol: TCP
port: 80
egress:
- to:
- podSelector:
matchLabels:
app: myapp
ports:
- protocol: TCP
port: 80
保存为network-policy.yaml,然后应用:
kubectl apply -f network-policy.yaml
确保Pod能够正常通信,并且网络策略生效。
kubectl get pods --all-namespaces
你应该能看到Pod的状态为Running。
创建两个Pod并测试它们之间的通信。
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
保存为nginx-pod.yaml,然后应用:
kubectl apply -f nginx-pod.yaml
重复上述步骤创建另一个Pod,并使用kubectl exec进入其中一个Pod,尝试访问另一个Pod的IP地址和端口。
如果你需要通过HTTP/HTTPS访问你的应用,可以配置Ingress控制器。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
保存为ingress.yaml,然后应用:
kubectl apply -f ingress.yaml
通过以上步骤,你应该能够在CentOS环境下成功配置Kubernetes网络。根据具体需求,你可能还需要进行更多的配置和优化。