天天看點

本地部署安裝Calico網絡

2 本地部署安裝Calico網絡

(1)

官方文檔: https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises

(2)

我這裡叢集使用的calico版本為v3.20.1。

(3) Kubernetes API datastore是Kubernetes工作負載推薦的資料存儲。不建議将etcd資料庫用于新安裝。

但是,如果您将Calico

作為 OpenStack 和 Kubernetes 的網絡插件運作,則它是一個選項。

在172.16.1.81(k8s-master1)節點上操作

2.1 檔案配置

1 方式一: 使用Kubernetes API datastore 安裝Calico,50個或更少節點

下載下傳

#

wget https://docs.projectcalico.org/manifests/calico.yaml

修改配置檔案

# vim

calico.yaml

1) 修改pod

CIDR,與叢集配置保持一緻

本地部署安裝Calico網絡

2) 配置calico選擇某網卡進行通信

本地部署安裝Calico網絡

-

name: IP_AUTODETECTION_METHOD

value:

"interface=eth1"

注: eth1為指定的通信網卡

3) 備注: CALICO_IPV4POOL_IPIP

本地部署安裝Calico網絡

Always # 為IPIP模式(預設)

Never

# 為BGP模式

(3)

初始化calico網絡

# kubectl apply -f calico.yaml

方式二:

使用Kubernetes API

datastore安裝Calico,超過50個節點

# wget https://docs.projectcalico.org/manifests/calico-typha.yaml

calico-typha.yaml

本地部署安裝Calico網絡
本地部署安裝Calico網絡

3) 修改Deployment命名為calico-typha的副本數

我們建議每200個節點至少有一個副本,并且不超過20個副本。在生産中,我們建議至少3個副本,以減少

滾動更新和故障的影響。副本數應始終小于節點數,否則滾動更新将停滞。

本地部署安裝Calico網絡

4) 備注: CALICO_IPV4POOL_IPIP

本地部署安裝Calico網絡

# kubectl apply -f calico-typha.yaml

3 方式三: 使用 etcd 安裝Calico

Calico使用etcd來儲存網絡拓撲和狀态

# wget

https://docs.projectcalico.org/manifests/calico-etcd.yaml

calico-etcd.yaml

1) 填入etcd證書

本地部署安裝Calico網絡

# cat

/usr/local/etcd/ssl/etcd-key.pem | base64 -w 0 > ETCD-KEY

/usr/local/etcd/ssl/ca.pem | base64 -w 0 > ETCD-CA

/usr/local/etcd/ssl/etcd.pem | base64 -w 0 > ETCD-CERT

sed -i "s?# etcd-key: null?etcd-key: $(cat ETCD-KEY)?"

sed -i "s?# etcd-ca: null?etcd-ca: $(cat ETCD-CA)?" calico-etcd.yaml

sed -i "s?# etcd-cert: null?etcd-cert: $(cat ETCD-CERT)?"

2) 填入etcd的位址

本地部署安裝Calico網絡

# sed

-i \

's?http://<ETCD_IP>:<ETCD_PORT>?https://172.16.1.81:2379,https://172.16.1.82:2379,https://172.16.1.83:2379?'

\

3) 開啟etcd證書路徑

本地部署安裝Calico網絡

sed -i 's?etcd_ca: ""?etcd_ca: "/calico-secrets/etcd-ca"?'

sed -i 's?etcd_cert: ""?etcd_cert: "/calico-secrets/etcd-cert"?'

sed -i 's?etcd_key: ""?etcd_key: "/calico-secrets/etcd-key"?'

4) 修改pod

本地部署安裝Calico網絡

5) 配置calico選擇某網卡進行通信

本地部署安裝Calico網絡

6) 備注: CALICO_IPV4POOL_IPIP

本地部署安裝Calico網絡

# kubectl apply -f calico-etcd.yaml

4 檢視網絡 ( 方式三環境 )

(1) 檢視所有pod的狀态

本地部署安裝Calico網絡

calico本地檔案存儲(每個安裝kubelet的節點上都有)

/opt/cni/bin/、/etc/cni/net.d/、/var/lib/cni/

本地部署安裝Calico網絡

(3) calico-kubeconfig認證檔案

本地部署安裝Calico網絡

2.2 将calicoctl作為二進制檔案安裝在單個主機上

calicoctl用于管理Calico政策和配置,以及檢視詳細的叢集狀态,比如檢視IP池使用率和BGP狀态。

保始終安裝calicoctl與叢集上運作的 Calico 版本比對的版本。

官方文檔: https://docs.projectcalico.org/getting-started/clis/calicoctl/install

1 下載下傳插件

# wget https://github.com/projectcalico/calicoctl/releases/download/v3.20.1/calicoctl-linux-amd64

mv calicoctl-linux-amd64 /usr/bin/calicoctl

# chmod +x /usr/bin/calicoctl

2 驗證

預設通過/root/.kube/config通路api-server

擷取calico節點

calicoctl get node

本地部署安裝Calico網絡

擷取calico節點狀态

# calicoctl node status

本地部署安裝Calico網絡

提示:

在節點上檢視calico狀态時,不顯示目前節點的calico狀态。

比如在172.16.1.82(k8s-master2)節點上檢視calico的狀态如下:

本地部署安裝Calico網絡

(3) 檢視工作中的負載節點

calicoctl get workloadendpoints

本地部署安裝Calico網絡

(4)

檢視目前叢集狀态

kubectl get nodes

本地部署安裝Calico網絡

# kubectl get pod -A -o wide

本地部署安裝Calico網絡

.3 下線節點

本地部署安裝Calico網絡

驅除異常節點上的服務

# kubectl

drain <異常節點的nodename> --delete-local-data

--force --ignore-daemonsets

# kubectl

drain k8s-node1 --delete-local-data --force --ignore-daemonsets

驅除後檢視Pod是否成功遷移到其他節點

本地部署安裝Calico網絡

删除node

delete node <異常節點的nodename>

kubectl delete node k8s-node1

# 删除後檢視該node是否去除

本地部署安裝Calico網絡

清除節點資訊(防止重新加入叢集報錯

在172.16.1.83(k8s-node1)節點上操作

# iptables -nL

iptables -F

iptables -X

# iptables -Z

注: kubeadm還需要使用如下步驟

# kubeadm reset

删除多餘網卡(正常網卡和docker 橋除外

# systemctl

restart docker

# ifconfig

<網卡名>

down <=> ip

link set <網卡名>

down

# ip

link delete <網卡名>

rm -rf

/opt/cni/bin/*

rm -rf /etc/cni/net.d/*

# rm -rf /var/lib/cni/*

5 重新加入叢集

6 檢視是否加入叢集