在CentOS上配置Kubernetes(k8s)网络策略主要涉及定义和部署NetworkPolicy资源对象,这些对象用于控制Pod之间的网络通信。以下是配置网络策略的基本步骤和示例:
确保你的Kubernetes集群已经安装并运行。你可以使用Flannel或Calico等网络插件来提供CNI(容器网络接口)支持。
以Calico为例,安装Calico网络插件:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
创建一个YAML文件来定义您的网络策略。例如,创建一个名为 deny-all.yaml 的文件,内容如下:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
这个策略会拒绝所有Pod之间的入站和出站流量。
使用 kubectl 命令应用您创建的网络策略:
kubectl apply -f deny-all.yaml
您可以使用以下命令查看当前的网络策略:
kubectl get networkpolicy
并且可以通过尝试Pod之间的通信来验证策略是否生效。
假设您有两个Pod,分别名为 pod-a 和 pod-b,并且您希望它们之间可以通信。您可以创建一个名为 allow-same-namespace.yaml 的文件,内容如下:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
spec:
podSelector:
matchLabels:
app: my-app
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: my-app
ports:
- protocol: TCP
port: 80
egress:
- to:
- podSelector:
matchLabels:
app: my-app
ports:
- protocol: TCP
port: 80
然后应用这个策略:
kubectl apply -f allow-same-namespace.yaml
通过以上步骤,您可以在CentOS上成功配置Kubernetes网络策略。