1. 程式人生 > 其它 >kubernetes v1.8.13 部署calico v3.13網路

kubernetes v1.8.13 部署calico v3.13網路

技術標籤:kubernetes

在網上找了很多關於k8s部署calico網路的文章,很多都過時了或跟我自己的情況不一樣的,剛剛正好成功部署了calico v3.13.4版本,在這裡做一個筆記,方便自己和後來者少採坑。

本文使用的部署方法是使用calico.yaml直接安裝的方式。

一、準備工作

1、首先已經安裝完成k8s,並且master和worker已經組成叢集

2、準備calico需要的docker映象,我用的v3.13.4,必須準備一下4個映象,提前下載這四個映象並且放到自己的dockerhub裡面,或者你的環境可以連線外網,就到阿里雲等國內映象倉庫搜尋對應的映象,並修改calico裡的地址

rancher/calico-node                                                  v3.13.4                        c91d49e6f044        7 months ago        261MB
rancher/calico-pod2daemon-flexvol                                    v3.13.4                        c5dca18c0346        7 months ago        112MB
rancher/calico-cni                                                   v3.13.4                        9e1176a74e85        7 months ago        225MB
rancher/calico-kube-controllers                                      v3.13.4                        f9f70a2e922f        7 months ago        56.6MB

二、下載和修改calico.yaml

下載地址:https://docs.projectcalico.org/archive/v3.13/getting-started/kubernetes/installation/hosted/calico.yaml

如果是其他版本,請修改中間的版本號,注意只需要修改到第二個版本號即可

下面是下載的calico.yaml檔案需要修改的部分(別忘了還需要修改映象地址,這裡略了)

---
guide/secrets/
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: calico-etcd-secrets
  namespace: kube-system
data:
  # 
  # 重點重點重點
  # 用etcd的證書檔案,生成下面的etcd-key等,命令如: cat <file> | base64 -w 0
  #
  etcd-key: null          
  etcd-cert: null
  etcd-ca: null
---

kind: ConfigMap
apiVersion: v1
metadata:
  name: calico-config
  namespace: kube-system
data:
  etcd_endpoints: "http://xxx.xxx.xxx.xxx:2379,http://xxx.xxx.xxx.xxx:2379,http://xxx.xxx.xxx.xxx:2379"  #這裡是你的etcd叢集地址
  #下面三個,刪掉#和前面的引號,如 etcd_ca: "/calico-secrets/etcd-ca" 
  etcd_ca: ""   # "/calico-secrets/etcd-ca"    
  etcd_cert: "" # "/calico-secrets/etcd-cert"
  etcd_key: ""  # "/calico-secrets/etcd-key"
  typha_service_name: "none"
  calico_backend: "bird"
  veth_mtu: "1440"

重點重點重點:

上面配置檔案中標註重點的地方,etcd-key,etcd-cert,etcd-ca(中間是橫槓)後面需要生成的證書內容是從哪來的呢?在我的環境中是從這個目錄下來的

/etc/kubernetes/pki/etcd

[[email protected] etcd]#
[[email protected] etcd]# pwd
/etc/kubernetes/pki/etcd
[[email protected] etcd]# ls
ca.crt  ca.key  healthcheck-client.crt  healthcheck-client.key  peer.crt  peer.key  server.crt  server.key
[[email protected] etcd]#

其中:

etcd-key 對應的是 server.key

etcd-cert 對應的是 server.crt

etcd-ca 對應的是 ca.crt

在/etc/kubernetes/pki/etcd目錄下用一下命令分別生成證書的加密字串,然後填到配置檔案中對應的地方

catserver.key |base64 -w 0
cat server.crt |base64 -w 0
cat ca.crt | base64 -w 0

最後kubectl apply -f calico.yaml,然後檢查部署結果