对于 Kubernetes 1.24 及以上版本,Calico 网络插件的离线安装需要适应新的容器运行时环境,即 containerd。以下是详细的步骤,包含如何下载和部署必要的文件和镜像。

1. 准备工作

下载 Calico 相关文件和镜像

在能够访问互联网的机器上进行以下准备工作:

  1. 下载 Calico 安装文件

    从 Calico 的官方文档或 GitHub 仓库下载安装文件。Calico 提供了适用于不同 Kubernetes 版本的安装文件。

    curl -O -L https://raw.githubusercontent.com/projectcalico/calico/v3.24.1/manifests/calico.yaml
    
  2. 下载必要的容器镜像

    通过 ctr 命令下载所需的镜像:

    ctr image pull docker.io/calico/cni:v3.24.1
    ctr image pull docker.io/calico/pod2daemon-flexvol:v3.24.1
    ctr image pull docker.io/calico/node:v3.24.1
    ctr image pull docker.io/calico/kube-controllers:v3.24.1
    ctr image pull docker.io/calico/typha:v3.24.1
    
  3. 保存容器镜像

    将这些镜像保存为 tar 文件,以便后续传输到离线环境:

    ctr image export calico-cni-v3.24.1.tar docker.io/calico/cni:v3.24.1
    ctr image export calico-pod2daemon-flexvol-v3.24.1.tar docker.io/calico/pod2daemon-flexvol:v3.24.1
    ctr image export calico-node-v3.24.1.tar docker.io/calico/node:v3.24.1
    ctr image export calico-kube-controllers-v3.24.1.tar docker.io/calico/kube-controllers:v3.24.1
    ctr image export calico-typha-v3.24.1.tar docker.io/calico/typha:v3.24.1
    
传输文件到离线环境

将下载的 calico.yaml 文件和保存的容器镜像 tar 文件传输到离线环境的主节点。

scp calico.yaml root@k8s-master01:/root/
scp calico-cni-v3.24.1.tar root@k8s-master01:/root/
scp calico-pod2daemon-flexvol-v3.24.1.tar root@k8s-master01:/root/
scp calico-node-v3.24.1.tar root@k8s-master01:/root/
scp calico-kube-controllers-v3.24.1.tar root@k8s-master01:/root/
scp calico-typha-v3.24.1.tar root@k8s-master01:/root/

2. 在离线环境中安装 Calico

在离线环境的主节点上执行以下步骤:

导入容器镜像

将传输到离线环境的 tar 文件导入到 containerd

ctr -n=k8s.io image import /root/calico-cni-v3.24.1.tar
ctr -n=k8s.io image import /root/calico-pod2daemon-flexvol-v3.24.1.tar
ctr -n=k8s.io image import /root/calico-node-v3.24.1.tar
ctr -n=k8s.io image import /root/calico-kube-controllers-v3.24.1.tar
ctr -n=k8s.io image import /root/calico-typha-v3.24.1.tar
修改 Calico YAML 文件(如果需要)

确保 Calico YAML 文件中使用的是本地镜像。如果原文件中引用了外部镜像地址,需要替换为本地镜像地址。

打开 calico.yaml 文件并检查 image 字段:

...
containers:
  - name: calico-node
    image: docker.io/calico/node:v3.24.1
  - name: calico-kube-controllers
    image: docker.io/calico/kube-controllers:v3.24.1
  - name: calico-typha
    image: docker.io/calico/typha:v3.24.1
...

确保镜像路径正确且与导入的镜像标签一致。

部署 Calico

使用 kubectl 命令部署 Calico:

kubectl apply -f /root/calico.yaml
验证安装

验证 Calico 组件是否已正确部署:

kubectl get pods -n kube-system

检查所有 Calico 相关的 Pod 是否处于 Running 状态。

总结

离线安装 Calico 网络插件需要在有互联网连接的环境中下载必要的安装文件和容器镜像,然后将这些文件和镜像传输到离线环境,并在离线环境中进行配置和部署。通过上述步骤,你可以在没有互联网连接的情况下成功安装和运行 Calico 网络插件。如果你在安装过程中遇到任何问题,可以通过调整 YAML 配置文件或检查容器镜像的正确性来解决。希望这些步骤对你有所帮助,如果有任何进一步的问题,请随时提出。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐