安裝Calico網路與調整Kubernetes Pod Network CIDR

安裝Calico網路與調整Kubernetes Pod Network CIDR

在設定新的 Kubernetes 叢集並安裝 Calico 網路發現,現在 Calico 網路設定之前有些差異,留個短篇筆記。

在設定新的 Kubernetes 叢集時,預設如果要採用 Calico 網路,那麼我們一開始 kubeadm init 就先指定好預設的 --pod-network-cidr,例如:

# Pod network add-on: calico
sudo kubeadm init --pod-network-cidr=192.168.0.0/16

192.168.0.0/16 是 Calico 預設的 Pod network 組態,因此,後續基本上照官網依序下面指令,就能把 Calico 網路裝起來:

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/operator-crds.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/tigera-operator.yaml
curl https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/custom-resources.yaml -O
kubectl create -f custom-resources.yaml
watch kubectl get pods -n calico-system

但採用 192.168.0.0/16 前需要做一件很重要的事,就是你的整個網路環境,不能有其他 192.168.0.0/16 的使用,不然會突然有一天發現 Pod 網路與 Intranet 網路通訊有問題。(我們就中過這樣的獎!)由於 192.168.0.0/16 實在太容易衝到了。所以我們新的 Kubernetes 叢集一開始換了一組 Pod network 組態,例如:--pod-network-cidr=10.244.0.0/16

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

kubeadm init 初始化不會有問題,但到了設定 Calico 就不能採預設步驟來安裝,原因也很簡單,我們需要修改 Calico 預設 Pod network 設定。修改也不難,官方其實很貼心,它把可能需要客制化的組態都已經抽到 custom-resources.yaml 裡(就是上面第三行下載回來的檔案),修改一下 kind: Installation 裡的 cidr: 10.244.0.0/16

$ cat custom-resources.yaml
# This section includes base Calico installation configuration.
# For more information, see: https://docs.tigera.io/calico/latest/reference/installation/api#operator.tigera.io/v1.Installation
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  # Configures Calico networking.
  calicoNetwork:
    ipPools:
    - name: default-ipv4-ippool
      blockSize: 26
      #cidr: 192.168.0.0/16
      cidr: 10.244.0.0/16
      encapsulation: VXLANCrossSubnet
      natOutgoing: Enabled
      nodeSelector: all()

這樣 Kubernetes Pod network 與 Calico Pod network 才能吻合並運作起來。

Calico 文件參考:

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。