Kubernetes 二进制部署 《easzlab / kubeasz项目部署》- 03-安装容器运行时

本文介绍了如何在Kubernetes中根据版本选择并安装containerd作为默认容器运行时,以及kubeasz项目的部署步骤,包括containerd的安装、配置、与Docker命令对比,以及crictl工具的管理和使用。特别提到kubeasz自动处理了Sandbox_IMAGE配置以确保Pod的正常启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kubernetes 二进制部署 《easzlab / kubeasz项目部署》

03-安装容器运行时

项目根据k8s版本提供不同的默认容器运行时:

k8s 版本 < 1.24 时,支持docker containerd 可选
k8s 版本 >= 1.24 时,仅支持 containerd
[root@k8s-master-01 kubeasz]# cat playbooks/03.runtime.yml
# to install a container runtime
- hosts:
  - kube_master
  - kube_node
  roles:
  - { role: docker, when: "CONTAINER_RUNTIME == 'docker'" }
  - { role: containerd, when: "CONTAINER_RUNTIME == 'containerd'" }

kubeasz 集成安装 containerd

注意:k8s 1.24以后,项目已经设置默认容器运行时为 containerd,无需手动修改
执行安装:分步安装ezctl setup xxxx 03

命令对比

命令dockercrictl(推荐)ctr
查看容器列表docker pscrictl psctr -n k8s.io c ls
查看容器详情docker inspectcrictl inspectctr -n k8s.io c info
查看容器日志docker logscrictl logs
容器内执行命令docker execcrictl exec
挂载容器docker attachcrictl attach
容器资源使用docker statscrictl stats
创建容器docker createcrictl createctr -n k8s.io c create
启动容器docker startcrictl startctr -n k8s.io run
停止容器docker stopcrictl stop
删除容器docker rmcrictl rmctr -n k8s.io c del
查看镜像列表docker imagescrictl imagesctr -n k8s.io i ls
查看镜像详情docker inspectcrictl inspecti
拉取镜像docker pullcrictl pullctr -n k8s.io i pull
推送镜像docker pushctr -n k8s.io i push
删除镜像docker rmicrictl rmictr -n k8s.io i rm
查看Pod列表crictl pods
查看Pod详情crictl inspectp
启动Podcrictl runp
停止Podcrictl stopp

containerd和docker命令大体相似,我们甚至可以通过alias来把crictl改成docker

alias docker=crictl
[root@k8s-master-01 kubeasz]# cat roles/containerd/tasks/main.yml
- name: 获取是否已经安装containerd
  shell: 'systemctl is-active containerd || echo "NoFound"'
  register: containerd_svc

- block:
    - name: 准备containerd相关目录
      file: name={{ item }} state=directory
      with_items:
      - "{{ bin_dir }}/containerd-bin"
      - "/etc/containerd"

    - name: 加载内核模块 overlay
      modprobe: name=overlay state=present

    - name: 下载 containerd 二进制文件
      copy: src={{ item }} dest={{ bin_dir }}/containerd-bin/ mode=0755
      with_fileglob:
      - "{{ base_dir }}/bin/containerd-bin/*"
      tags: upgrade

    - name: 下载 crictl
      copy: src={{ base_dir }}/bin/crictl dest={{ bin_dir }}/crictl mode=0755

    - name: 添加 crictl 自动补全
      lineinfile:
        dest: ~/.bashrc
        state: present
        regexp: 'crictl completion'
        line: 'source <(crictl completion bash) # generated by kubeasz'

    - name: 创建 containerd 配置文件
      template: src=config.toml.j2 dest=/etc/containerd/config.toml
      tags: upgrade

    - name: 创建systemd unit文件
      template: src=containerd.service.j2 dest=/etc/systemd/system/containerd.service
      tags: upgrade

    - name: 创建 crictl 配置
      template: src=crictl.yaml.j2 dest=/etc/crictl.yaml

    - name: 开机启用 containerd 服务
      shell: systemctl enable containerd
      ignore_errors: true

    - name: 开启 containerd 服务
      shell: systemctl daemon-reload && systemctl restart containerd
      tags: upgrade

    - name: 轮询等待containerd服务运行
      shell: "systemctl is-active containerd.service"
      register: containerd_status
      until: '"active" in containerd_status.stdout'
      retries: 8
      delay: 2
      tags: upgrade
  when: "'NoFound' in containerd_svc.stdout"

需要注意config.toml.j2这个文件中的sandbox_image = "{{ SANDBOX_IMAGE }}",这个沙盒镜像在kubelet启动pod的时候会用到,所以如果无法启动pod,很有可能是这个插件没装好。不过kubeasz项目已经为我们填好了

[root@k8s-master-01 kubeasz]# ./ezctl setup k8s-cluster-01 03
[root@k8s-master-01 kubeasz]# ansible node -m shell -a "systemctl is-active containerd"
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.17.241 | CHANGED | rc=0 >>
active
192.168.17.240 | CHANGED | rc=0 >>
active
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值