安装calico

安装calico安装 docker https www cnblogs com cjsblogs p 8717304 html 安装 etcd 集群 https www cnblogs com cjsblogs p 8716976 html 注意 1 这里要说明下 因为后期需要固定 nginx ingress 的容器 IP 地址 实验在创建 calico 网络之后会有个 BUG 即 2 6 2 之后版本在创建指定 IP 的容

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

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

 

先安装docker以及etcd集群

将etcd集群的/opt/ssl/*.pem全部拷贝到对应的docker宿主机的/opt/ssl下

daemon.json添加etcd相关配置

 "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 

  

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

  

创建证书:由于搭建etcd集群中已经创建了etcd的证书,calico只需要复用即可

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

  

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系统服务

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的映射路径,会导致calico找不到证书及无法启动容器

 

配置环境变量

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 

这里需要注意的是,此配置为容器内部读取的变量,所以证书路径为容器路径,而不是宿主机路径。

 

配置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:2379 etcdKeyFile: /opt/platform/calico/certs/etcd-key.pem etcdCertFile: /opt/platform/calico/certs/etcd.pem etcdCACertFile: /opt/platform/calico/certs/ca.pem 

这里需要注意的是,这是配置calicoctl调用etcd接口的环境变量,所以证书路径为宿主机路径。calicoctl 默认读/etc/calico/下的calicoctl.cfg

 

启动calico

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

  

以上配置均需要在每个node节点上操作

  

创建calico网络

docker network create --driver calico --ipam-driver calico-ipam --subnet=10.233.0.0/16 calico docker network ls #查看docker所有网络 

 

创建calico网络IP池

calicoctl apply -f ipPool.yaml apiVersion: v1 kind: ipPool metadata: cidr: 10.233.0.0/16 spec: ipip: enabled: true mode: always nat-outgoing: true disabled: false 

 

查看calico IPAM配置

ln -s /opt/platform/calico/calicoctl /usr/local/sbin/calicoctl #创建命令快捷方式

calicoctl get ipPool 

 

网络验证:

分别在node1和node2创建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 

 

相关参考命令

查看网络

docker network ls 

  

查看具体信息

docker network inspect b69fb4a79dfb 

查看workloadEndpoint

calicoctl get workloadEndpoint 

 

删除workloadEndpoint容器在calico服务停止的情况下被删除了,calico服务再次启动的时候注册到etcd里的数据并没会刷新掉被删除容器的信息,如果你启动的是固定IP的容器,则会提示workloadEndpoint信息冲突,需要手动去删除

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

  

 

转载于:https://www.cnblogs.com/cjsblogs/p/9154709.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227579.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:59
下一篇 2026年3月16日 下午9:00


相关推荐

  • Flash–基础认识

    Flash–基础认识1 空间划分块 bank gt 扇区 sector gt 页 page 一般一个扇区 sector 多个页 page 一个块 bank 又有多个扇区 sector 2 举例以 W25Q128 为例 128Mbit 的容量 每页 256 字节 一共 65536 个字节 合计 65536 256 8 134 217 728bit 等于 134 217 728 1024 1024 128Mbit 每次编程数据为 256 字节 擦除可以按 16 页 即一个扇区擦除 4K 按 128 页擦除 3

    2026年3月26日
    2
  • 学生如何免费获取Cursor Pro——完整教程

    学生如何免费获取Cursor Pro——完整教程

    2026年3月16日
    9
  • totalcmd简单教程–help详解

    totalcmd简单教程–help详解configuartio 对话框中有个 tabstops 这表示每一栏的宽度 好像只对 Allfiledetai 按第三个 button 或对 tabstop 右键选 full 栏起作用 什么是 tabstop 对每一个 dialog 都可点 help 也可在 index 中输入 dialog 要想显示 comment 首先在 option display 中打开相应选项 最

    2025年7月24日
    8
  • ThoughtWorks 结对编程

    ThoughtWorks 结对编程起因技术博客写多了 不会起名字的说 可能写多了 最后写出来的东西偏向于冷冰冰吧 正经的起因可能就是某个懒散的下午 打开电脑 不知道做什么 打开牛客看了看 随即看到结对编程 不知道是做什么的 点开看了看 页面很好 不想中国人写的 鬼使神差的就报名了 点进去看了看 居然还有题 而且第一道题还是 intellijidea 的快捷键 很感兴趣 就做了 其实当时应该好好学习一下的 因为现在视频点不进

    2026年3月19日
    2
  • OpenSSL的Heartbleed漏洞原理及简单模拟

    OpenSSL的Heartbleed漏洞原理及简单模拟Heartbleed漏洞自从Heartbleed漏洞曝光以来,网上能看到很多相关的文章,但大部分都是写的云里雾里,本文尝试直观明了的对漏洞原理进行说明及模拟。OpenSSL是SSL协议以及一系列加密算法的开源实现,使用C语言编写。OpenSSL采用Apache开源协议,可以免费用于商业用途,在很多linux发行版和服务器中得到广泛应用。OpenSSL出现漏洞造成的影响是巨大的,Heartb

    2022年7月25日
    10
  • vb教程编程实例详解pdf_vb程序设计教程第五版答案

    vb教程编程实例详解pdf_vb程序设计教程第五版答案实验8-5编写一个能将任意两个文件的内容合并的程序,程序界面由读者由自由设计。解题,在窗体建立一个按钮控件,假定C盘已经有两个要合并的文件text1.dat和text2.dat,代码如下:PrivateSubCommand1_Click()DimcharAsByteOpen”C:\text1.dat”ForBinaryAs#1Open”…

    2022年10月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号