顯示具有 Calico 標籤的文章。 顯示所有文章
顯示具有 Calico 標籤的文章。 顯示所有文章

安裝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

修正Calico 3.27升級至新版本後IP Pool無法修改的問題

修正Calico 3.27升級至新版本後IP Pool無法修改的問題

前情提要,我們在 Calico 3.27 升級至 Calico 3.28 之後的版本都會碰到 Defaul IP Pool 跑回 192.168.x.x 而且改不動的情況。

$ calicoctl version
Client Version:    v3.27.4
Git commit:        2183fee02
Cluster Version:   v3.27.4
Cluster Type:      typha,kdd,k8s,operator,bgp,kubeadm
$ calicoctl get ippool -o wide
NAME       CIDR            NAT    IPIPMODE   VXLANMODE     DISABLED   DISABLEBGPEXPORT   SELECTOR
new-pool   10.244.0.0/16   true   Never      CrossSubnet   false      false              all()

Ubuntu UFW with Kubernetes and Calico Firewall Rules

Ubuntu UFW with Kubernetes and Calico Firewall Rules

之前在架設 Kubernetes 叢集預設把防火牆給關閉。當然,關閉防火牆是非常不安全的行為。 當所有 Kubernetes 和 Calico 組態與服務都上線之後,我們需要把防火牆設定回去。

這裡只針對兩個部分:Kubernetes 與 Calico 所以需要埠(Port)。

Calico 3.28.1 IPPool Issue #9100 - Donwngrade solution

Calico 3.28.1 IPPool Issue #9100 - Donwngrade solution

我們參考 Calico upgrade docs (uses the operator) 升級了 Calico CNI 元件從 3.27.x 到 3.28.1。

$ calicoctl version
Client Version:    v3.28.1
Git commit:        601856343
Cluster Version:   v3.28.1
Cluster Type:      typha,kdd,k8s,operator,bgp,kubeadm,win

升級後發現,原本的 default-ipv4-ippool 被設定回來了。在 3.27.x,因為一開始沒考慮好網段問題,因此我們設定了一組新的 IPPool 來提供給 Pods 使用,來解決一些 IP 網路的問題。在 3.27 依照 migrate-pools 文件,我們為 default-ipv4-ippool 設定了 disabled: true 並且運作良好。但升級至 3.28.1 後,除了 default-ipv4-ippool 被設定回來並且被啟用了。我們還發現,原始按照文件可以設定 disabled: true 無法被正確套用,刪除指令就算執行成功,其實也是無效的。

$ calicoctl get ippool -o wide
NAME                  CIDR             NAT    IPIPMODE   VXLANMODE     DISABLED   DISABLEBGPEXPORT   SELECTOR
default-ipv4-ippool   192.168.0.0/16   true   Never      CrossSubnet   false      false              all()
new-pool              10.244.0.0/16    true   Never      CrossSubnet   false      false              all()

$ calicoctl get ippool -o yaml > pools.yaml
# add disabled: true
$ vim pools.yaml
$ calicoctl apply -f pools.yaml
Successfully applied 2 'IPPool' resource(s)
# DISABLED : false
$ calicoctl get ippool -o wide
NAME                  CIDR             NAT    IPIPMODE   VXLANMODE     DISABLED   DISABLEBGPEXPORT   SELECTOR
default-ipv4-ippool   192.168.0.0/16   true   Never      CrossSubnet   false      false              all()
new-pool              10.244.0.0/16    true   Never      CrossSubnet   false      false              all()

# delete default-ipv4-ippool
$ calicoctl delete pool default-ipv4-ippool
Successfully deleted 1 'IPPool' resource(s)
$ calicoctl get ippool -o wide
NAME                  CIDR             NAT    IPIPMODE   VXLANMODE     DISABLED   DISABLEBGPEXPORT   SELECTOR
default-ipv4-ippool   192.168.0.0/16   true   Never      CrossSubnet   false      false              all()
new-pool              10.x.0.0/16    true   Never      CrossSubnet   false      false              all()

# use patch method
$ calicoctl patch ippool default-ipv4-ippool -p '{"spec": {"disabled": true}}'
$ calicoctl get ippool -o wide
NAME                  CIDR             NAT    IPIPMODE   VXLANMODE     DISABLED   DISABLEBGPEXPORT   SELECTOR
default-ipv4-ippool   192.168.0.0/16   true   Never      CrossSubnet   false      false              all()
new-pool              10.x.0.0/16    true   Never      CrossSubnet   false      false              all()