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