在CentOS上設置Kubernetes(k8s)的網絡策略,可以按照以下步驟進行:
首先,確保你已經在CentOS上安裝并配置了一個Kubernetes集群。你可以使用kubeadm
來快速搭建一個集群。
# 安裝kubeadm, kubelet和kubectl
sudo yum install -y kubeadm kubelet kubectl --disable-gpg-check
# 啟動kubelet服務
sudo systemctl enable kubelet
sudo systemctl start kubelet
# 初始化Kubernetes集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
# 按照提示配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Kubernetes需要一個網絡插件來管理Pod之間的通信。常用的網絡插件有Calico、Flannel、Weave等。這里以Calico為例。
# 安裝Calico
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
網絡策略定義了哪些Pod可以相互通信以及如何通信。以下是一個簡單的示例,限制只有同一個命名空間中的Pod可以相互通信。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: your-namespace
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
這個策略會拒絕所有進入和離開your-namespace
命名空間的流量。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-label
namespace: your-namespace
spec:
podSelector:
matchLabels:
app: your-app
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: your-app
ports:
- protocol: TCP
port: 80
egress:
- to:
- podSelector:
matchLabels:
app: your-app
ports:
- protocol: TCP
port: 80
這個策略允許標簽為app=your-app
的Pod之間通過TCP端口80進行通信。
將上述YAML文件保存為network-policy.yaml
,然后使用kubectl
應用:
kubectl apply -f network-policy.yaml
你可以使用以下命令來查看網絡策略是否生效:
kubectl get networkpolicy -n your-namespace
通過以上步驟,你可以在CentOS上為Kubernetes集群設置網絡策略。