日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安装calico

發(fā)布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安装calico 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

安裝docker:https://www.cnblogs.com/cjsblogs/p/8717304.html

安裝etcd集群:https://www.cnblogs.com/cjsblogs/p/8716976.html

注意:
(1) 這里要說明下,因為后期需要固定nginx-ingress的容器IP地址。實驗在創(chuàng)建calico網(wǎng)絡(luò)之后會有個BUG,即2.6.2之后版本在創(chuàng)建指定IP的容器的時候會報錯,所以calico的版本必須為<=2.6.2。
(2) 因為需要針對nginx-ingress容器單獨做端口打通,所以需要在calico的calico.env和calico-node.service添加參數(shù)CALICO_LIBNETWORK_LABEL_ENDPOINTS=true,允許calico策略讀取docker容器的label標簽。
(3)calico版本需要選擇v1.6.2, 如v1.6.4會有bug,不建議使用,其余版本需要測試

?

先安裝docker以及etcd集群

將etcd集群的/opt/ssl/*.pem全部拷貝到對應(yīng)的docker宿主機的/opt/ssl下

daemon.json添加etcd相關(guān)配置

"cluster-store": "etcd://172.16.150.25:2379","cluster-store-opts": {"kv.cacertfile": "/opt/ssl/ca.pem","kv.certfile": "/opt/ssl/etcd.pem","kv.keyfile": "/opt/ssl/etcd-key.pem"} }

  

重啟docker

systemctl daemon-reload && systemctl restart docker

  

搭建配置calico
配置準備:創(chuàng)建calico目錄(以下路徑均為自定義方便管理,在配置的時候跟官網(wǎng)有些區(qū)別,注意修改配置文件)

mkdir -p /opt/platform/calico/certs /opt/platform/calico/log

  

創(chuàng)建證書:由于搭建etcd集群中已經(jīng)創(chuàng)建了etcd的證書,calico只需要復(fù)用即可

cp -a /opt/ssl/*.pem /opt/platform/calico/certs/

  

安裝配置calico
安裝calicoctl

wget -O /opt/platform/calico/calicoctl https://github.com/projectcalico/calicoctl/releases/download/v1.6.2/calicoctl chmod +x /opt/platform/calico/calicoctl

?

下載calicoctl鏡像,如果下載不了,需要FQ

docker pull quay.io/calico/node:v2.6.2

   

配置calico系統(tǒng)服務(wù)

vim /lib/systemd/system/calico-node.service [Unit] Description=calico-node After=docker.service Requires=docker.service [Service] EnvironmentFile=/opt/platform/calico/calico.env ExecStartPre=-/usr/bin/docker rm -f calico-node ExecStart=/usr/bin/docker run --net=host --privileged \ --name=calico-node \ -e NODENAME=${CALICO_NODENAME} \ -e IP=${CALICO_IP} \ -e IP6=${CALICO_IP6} \ -e CALICO_NETWORKING_BACKEND=${CALICO_NETWORKING_BACKEND} \ -e AS=${CALICO_AS} \ -e NO_DEFAULT_POOLS=${CALICO_NO_DEFAULT_POOLS} \ -e CALICO_LIBNETWORK_ENABLED=${CALICO_LIBNETWORK_ENABLED} \ -e ETCD_ENDPOINTS=${ETCD_ENDPOINTS} \ -e ETCD_CA_CERT_FILE=${ETCD_CA_CERT_FILE} \ -e ETCD_CERT_FILE=${ETCD_CERT_FILE} \ -e ETCD_KEY_FILE=${ETCD_KEY_FILE} \ -v /opt/platform/calico/certs:/etc/calico/certs \ -v /opt/platform/calico/log:/var/log/calico \ -v /run/docker/plugins:/run/docker/plugins \ -v /lib/modules:/lib/modules \ -v /var/run/calico:/var/run/calico \ -v /var/run/docker.sock:/var/run/docker.sock \ quay.io/calico/node:v2.6.2 ExecStop=-/usr/bin/docker stop calico-node Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target

這里需要注意的是,官方的service配置中沒有certs及docker.sock的映射路徑,會導(dǎo)致calico找不到證書及無法啟動容器

?

配置環(huán)境變量

vim /opt/platform/calico/calico.env ETCD_ENDPOINTS="https://172.16.150.25:2379,https://172.16.150.26:2379,https://172.16.150.27:2379" ETCD_CA_CERT_FILE="/etc/calico/certs/ca.pem" ETCD_CERT_FILE="/etc/calico/certs/etcd.pem" ETCD_KEY_FILE="/etc/calico/certs/etcd-key.pem" CALICO_NODENAME="" CALICO_NO_DEFAULT_POOLS="" CALICO_IP="" CALICO_IP6="" CALICO_AS="" CALICO_LIBNETWORK_ENABLED=true CALICO_NETWORKING_BACKEND=bird

這里需要注意的是,此配置為容器內(nèi)部讀取的變量,所以證書路徑為容器路徑,而不是宿主機路徑。

?

配置calicoctl的etcd存儲

mkdir -p /etc/calico/ vim /etc/calico/calicoctl.cfg apiVersion: v1 kind: calicoApiConfig metadata: spec:etcdEndpoints: https://172.16.150.25:2379,https://172.16.150.26:2379,https://172.16.150.27:2379etcdKeyFile: /opt/platform/calico/certs/etcd-key.pemetcdCertFile: /opt/platform/calico/certs/etcd.pemetcdCACertFile: /opt/platform/calico/certs/ca.pem

這里需要注意的是,這是配置calicoctl調(diào)用etcd接口的環(huán)境變量,所以證書路徑為宿主機路徑。calicoctl 默認讀/etc/calico/下的calicoctl.cfg

?

啟動calico

systemctl daemon-reload && systemctl enable calico-node && systemctl start calico-node

  

以上配置均需要在每個node節(jié)點上操作

? 

創(chuàng)建calico網(wǎng)絡(luò)

docker network create --driver calico --ipam-driver calico-ipam --subnet=10.233.0.0/16 calico docker network ls #查看docker所有網(wǎng)絡(luò)

--driver calico:網(wǎng)絡(luò)使用calico驅(qū)動
--ipam-driver calico-ipam:指定使用calico的IPAM驅(qū)動管理IP
--subnet:如果需要指定容器IP的話,需要指定calico網(wǎng)絡(luò)的IP段calico是global網(wǎng)絡(luò),etcd會將calico-net1同步到所有主機

?

創(chuàng)建calico網(wǎng)絡(luò)IP池

calicoctl apply -f ipPool.yaml apiVersion: v1 kind: ipPool metadata:cidr: 10.233.0.0/16 spec:ipip:enabled: truemode: alwaysnat-outgoing: truedisabled: false

 

查看calico IPAM配置

ln -s /opt/platform/calico/calicoctl /usr/local/sbin/calicoctl #創(chuàng)建命令快捷方式 calicoctl get ipPool

cidr:IP地址段,docker默認為192.168.0.0/16
ipip:IP 地址封裝,能實現(xiàn)不同網(wǎng)段的宿主機同docker網(wǎng)絡(luò)通信,mode有always和cross-subnet 2種模式,實測cross-subnet模式下容器之間無法ping通,github上有類似的問題,貌似是BUG。

?

網(wǎng)絡(luò)驗證:

分別在node1和node2創(chuàng)建job

node1 docker run --net calico --name workload-a -tid busybox docker run --net calico --name workload-b -tid busybox node2 docker run --net calico --name workload-c -tid busybox docker run --net calico --name workload-d -tid busybox

  

ping測試

docker exec workload-a ping -c 4 workload-b docker exec workload-a ping -c 4 workload-c docker exec workload-c ping -c 4 workload-d

正常情況下,
同網(wǎng)絡(luò)下能互相ping通,比如a和c(跨宿主)及a和b(同宿主)。

?

相關(guān)參考命令

查看網(wǎng)絡(luò)

docker network ls

  

查看具體信息

docker network inspect b69fb4a79dfb

其中在Containers下就有容器的信息,其中EndpointID就是下面提到的workloadEndpoint

查看workloadEndpoint

calicoctl get workloadEndpoint

 

刪除workloadEndpoint容器在calico服務(wù)停止的情況下被刪除了,calico服務(wù)再次啟動的時候注冊到etcd里的數(shù)據(jù)并沒會刷新掉被刪除容器的信息,如果你啟動的是固定IP的容器,則會提示workloadEndpoint信息沖突,需要手動去刪除

calicoctl delete workloadEndpoint 8173e77ea4b8dd69f68d21d846e99b27e57140dfdca28346ceeea50d4abc7e84 --node=W708- ATMQZLPR-1 --orchestrator=libnetwork --workload=libnetwork

  

?

轉(zhuǎn)載于:https://www.cnblogs.com/cjsblogs/p/9154709.html

總結(jié)

以上是生活随笔為你收集整理的安装calico的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。