在CentOS上配置Kubernetes(k8s)网络策略,可以按照以下步骤进行:
首先,确保你的CentOS系统已经安装了kubectl和kubeadm。如果还没有安装,可以使用以下命令:
sudo yum install -y kubectl kubeadm kubelet
如果你还没有初始化Kubernetes集群,可以使用以下命令:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Kubernetes支持多种网络插件,例如Calico、Flannel等。这里以Calico为例:
使用以下命令安装Calico:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
网络策略用于定义Pod之间的通信规则。以下是一个简单的示例,创建一个允许来自特定标签的Pod的流量,并拒绝其他所有流量的策略。
创建一个名为allow-specific-pod.yaml的文件,内容如下:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-specific-pod
spec:
podSelector:
matchLabels:
app: my-app
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
access: "true"
ports:
- protocol: TCP
port: 80
egress:
- to:
- podSelector:
matchLabels:
access: "true"
ports:
- protocol: TCP
port: 443
使用以下命令应用网络策略:
kubectl apply -f allow-specific-pod.yaml
你可以使用以下命令查看网络策略的状态:
kubectl get networkpolicy
你也可以查看特定Pod的网络策略应用情况:
kubectl describe networkpolicy allow-specific-pod
创建一些测试Pod来验证网络策略是否生效:
创建一个名为test-pod.yaml的文件,内容如下:
apiVersion: v1
kind: Pod
metadata:
name: test-pod
labels:
app: my-app
spec:
containers:
- name: test-container
image: nginx
应用测试Pod:
kubectl apply -f test-pod.yaml
创建一个名为allowed-pod.yaml的文件,内容如下:
apiVersion: v1
kind: Pod
metadata:
name: allowed-pod
labels:
access: "true"
spec:
containers:
- name: allowed-container
image: nginx
应用允许访问的Pod:
kubectl apply -f allowed-pod.yaml
尝试从allowed-pod访问test-pod:
kubectl exec -it allowed-pod -- curl http://test-pod
如果配置正确,你应该能够成功访问。
通过以上步骤,你可以在CentOS上配置Kubernetes网络策略,确保Pod之间的通信符合你的安全要求。