k8s集群安裝calico插件


calico官方地址:

https://docs.projectcalico.org/getting-started

自定義安裝說明頁面

https://docs.projectcalico.org/getting-started/kubernetes/installation/config-options

 

准備工作:

1、下載文件:

 

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

准備好配置文件中提到的鏡像,如下,自己本地下載好之后,傳到自己的私有倉庫中,然后修改文件中的鏡像地址,如果不這樣的話,每個node會從官方鏡像倉庫下載鏡像,啟動過程異常緩慢,甚至安裝失敗

  

2、下載鏡像:

docker pull calico/cni:v3.13.3

docker pull calico/pod2daemon-flexvol:v3.13.3

docker pull calico/node:v3.13.3

docker pull image: calico/kube-controllers:v3.13.3

#在本地啟動一個鏡像倉庫(也可以傳到自己現有的私有倉庫,如habor):

docker run -itd -p 5000:5000 -v /opt/data/registry:/var/lib/registry --name private_registry registry

 

3、修改鏡像tag,並上傳在本地的私有倉庫

 

#修改tag

docker tag calico/node:v3.13.3 192.168.1.111:5000/calico/node:v3.13.3

docker tag calico/pod2daemon-flexvol:v3.13.3 192.168.1.111:5000/calico/pod2daemon-flexvol:v3.13.3

docker tag calico/cni:v3.13.3 192.168.1.111:5000/calico/cni:v3.13.3

docker tag calico/kube-controllers:v3.13.3 192.168.1.111:5000/calico/kube-controllers:v3.13.3

#上傳

docker push 192.168.1.111:5000/calico/node:v3.13.3

docker push 192.168.1.111:5000/calico/pod2daemon-flexvol:v3.13.3

docker push 192.168.1.111:5000/calico/cni:v3.13.3

docker push 192.168.1.111:5000/calico/kube-controllers:v3.13.3

 

 

修改每個node上信任的倉庫地址,然后重啟docker

vim /etc/docker/daemon.json

如下:

 1 ##egistry-mirror是docker國內加速地址
 2 
 3 ##insecure-registries 是docker信任的沒有走https的倉庫地址
 4 
 5 { "registry-mirrors": ["https://registry.docker-cn.com",
 6 
 7                         "http://f1361db2.m.daocloud.io",
 8 
 9                         "http://hub-mirror.c.163.com"],
10 
11   "insecure-registries":["192.168.1.111:5000"]
12 
13  }
14 

重啟docker服務,並查看配置是否生效,如圖所示,Insecure Registries里面包含了我們設置的倉庫地址

service docker restart 

docker info

 

 

 

 

正式開始了:

 

 

一、修改配置文件calica-etcd.yaml文件

1、修改etcd數據庫地址以及證書認證

1  etcd_endpoints:  calico連接的etcd數據庫,也就是k8s中的etcd集群地址,也可以單獨配置calico的etcd數據庫,和k8s集群的數據庫分開,但是這樣增加了開銷,不必要
2 
3  etcd_ca:  "/calico-secrets/etcd-ca"  連接etcd數據庫集群的認證,這里只是一個名字,宿主機上的地址會在后面數據卷中定義出來
4 
5  etcd_cert: "/calico-secrets/etcd-cert"
6 
7  etcd_key: "/calico-secrets/etcd-key"

 

設置etcd的認證文件,文件中使用是這樣的掛載名字,如下圖,需要我們去指定宿主機上的源文件目錄

我不是用secret的方式定義的,所以要換成宿主機地址映射的方式,定義hostPath,將真實的地址寫在path后面 ,如下圖

注意,每個node上都需要這個目錄存在,並且有相應的認證文件(/etc/etcd/etcdSSL是etcd的認證證書存放目錄)

mkdir /etc/calico/calicoTSL -p

cp /etc/etcd/etcdSSL/ca.pem /etc/calico/calicoTSL/etcd-ca

cp /etc/etcd/etcdSSL/etcd-key.pem /etc/calico/calicoTSL/etcd-key

cp /etc/etcd/etcdSSL/etcd.pem /etc/calico/calicoTSL/etcd-cert

 

 

 

2、修改calico的鏡像地址

如准備工作步驟中所說,不提前准備好鏡像的話,極有可能導致節點下載鏡像失敗,最終安裝失敗,千萬不要忽略。

先看一下文件中所用到的鏡像名字和版本,如上圖,下載並上傳到自己本地倉庫中,修改配置文件中鏡像的名字,如下:

 

 

3、修改集群網段

默認是192.168.0.0/16網段,但是和我們的服務器本來的網段一樣,會產生沖突,所以我們需要修改一下,注意,這個網段應該與kubeapi定義--service-cluster-ip-range的網段一樣

 

 

修改好了如下:

 

4、配置calico的環境變量

在calico-node的配置中加入環境變量,注意將格式對齊,不然會報錯的

1 - name: KUBERNETES_SERVICE_HOST
2 value: "192.168.1.111"    #APIserver的地址
3 - name: KUBERNETES_SERVICE_PORT
4 value: "6443"    ##APIserver的監聽端口
5 - name: KUBERNETES_SERVICE_PORT_HTTPS
6 value: "6443"    ##APIserver的監聽端口

 

如下圖:

 

 

、修改好之后,kubectl啟動:

 

kubectl apply -f /etc/calico/calico-etcd.yaml

 

稍后就可以執行kubectl get pod -A 查看pod運行情況:

  

 

 

 

三、后續如果發生異常時,可以用到的命令:

 

kubectl logs -f calico-node-5rgfg -n kube-system   查看pod產生的日志

kubectl describe pod  calico-node-5rgfg -n kube-system  查看pod的具體描述

kubectl -n kube-system get ev  查看集群環境輸出

 

使用calicoctl命令:

wget https://github.com/projectcalico/calicoctl/releases/download/v3.13.3/calicoctl

chmod +x calicoctl

mv calicoctl /usr/bin/

DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl get nodes

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM