[转帖]【k8s】二、containerd的安装

k8s,containerd,安装 · 浏览次数 : 0

小编点评

**k8s节点基础环境安装** k8s节点基础环境安装,是将k8s安装到节点基础环境上的过程。经过上一篇文章以及本文的铺垫,k8s节点基础环境就算正式完成了。下一篇文章,将会介绍k8s节点怎么安装。 **步骤:** 1. 下载k8s安装包。 2. 安装k8s。 3. 配置k8s。 4. 安装cni。 5. 安装容器。 **注意:** * 下载k8s安装包时,需要带简单的排版。 * 安装k8s和cni时,需要使用管理员权限。 * 配置k8s时,需要根据节点基础环境进行配置。 **总结:** k8s节点基础环境安装,是将k8s安装到节点基础环境上的过程。经过上一篇文章以及本文的铺垫,k8s节点基础环境就算正式完成了。下一文章,将会介绍k8s节点怎么安装。

正文

目录

前言

安装containerd

解压安装

配置成systemd任务

安装runc

​编辑

安装cni

配置containerd镜像源

containerd基本使用

拓展阅读

nerdctl工具安装及使用

整体脚本

总结

写在后面


前言

上一篇文章,我们介绍了虚拟机的基础环境以及基础的网络配置,还有一些k8s节点要用到基础环境配置。本文将带领大家把containerd给安装了

containerd的项目官方地址

https://github.com/containerd/containerd

containerd的发布版本地址如下

https://github.com/containerd/containerd/releases

本次教程我们安装的是containerd-1.6.6版本

安装containerd

解压安装

首先下载压缩包

curl -LO https://github.com/containerd/containerd/releases/download/v1.6.6/containerd-1.6.6-linux-amd64.tar.gz

解压到/usr/local目录下

tar Cxzvf /usr/local containerd-1.6.6-linux-amd64.tar.gz

解压完成后,执行ctr -v 或者ctr version便可查看版本

配置成systemd任务

  1. mkdir -p /usr/local/lib/systemd/system/ && \
  2. curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /usr/local/lib/systemd/system/containerd.service && \
  3. systemctl daemon-reload && \
  4. systemctl enable --now containerd

安装runc

runc是容器运行时

runc实现了容器的init,run,create,ps...我们在运行容器所需要的cmd

  1. curl -LO https://github.com/opencontainers/runc/releases/download/v1.1.1/runc.amd64 && \
  2. install -m 755 runc.amd64 /usr/local/sbin/runc

安装cni

CNI(Container Network Interface) 是一套容器网络接口规范,通过插件的形式支持各种各样的网络类型,而标准化的好处就是你只需一套标准json配置就可以为一个容器创建网络接口。

  1. curl -JLO https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
  2. mkdir -p /opt/cni/bin && \
  3. tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

经过上面的步骤,把cni插件的可执行文件安装到了/opt/cni/bin目录下

配置containerd镜像源

由于网络原因,我们无法直接访问k8s.gcr.io网站。因此我们修改containerd的配置文件config.toml配置一下containerd的镜像源

  1. mkdir -p /etc/containerd && \
  2. containerd config default > /etc/containerd/config.toml && \
  3. sed -i "s#k8s.gcr.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml && \
  4. sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml && \
  5. sed -i '/registry.mirrors]/a\ \ \ \ \ \ \ \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]' /etc/containerd/config.toml && \
  6. sed -i '/registry.mirrors."docker.io"]/a\ \ \ \ \ \ \ \ \ \ endpoint = ["http://hub-mirror.c.163.com"]' /etc/containerd/config.toml && \
  7. sed -i '/hub-mirror.c.163.com"]/a\ \ \ \ \ \ \ \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]' /etc/containerd/config.toml && \
  8. sed -i '/"k8s.gcr.io"]/a\ \ \ \ \ \ \ \ \ \ endpoint = ["http://registry.aliyuncs.com/google_containers"]' /etc/containerd/config.toml && \
  9. echo "===========restart containerd to reload config===========" && \
  10. systemctl restart containerd

containerd基本使用

containerd命令与docker的命令大同小异,只是containerd多了一个namespace的概念。

ctr help可以查看containerd的命令

查看namespace为baiyu下的镜像文件

ctr images ls ns baiyu

一般k8s的镜像都会下载在k8s.io这个命名空间下

ctr iamges ls ns k8s.io

 

至此,k8s的基础容器containerd环境已经安装完毕了,注意,containerd是每台节点机器都要进行安装的。这里我只演示了k8s-master的部署。剩下的k8s-node1k8s-node2就由各位同学自行安装练习了。

拓展阅读

nerdctl工具安装及使用

nerdctl工具,是containerd官方为了让docker用户无感切换到containerd而开发的命令行工具。也就是docker的命令可以直接在nerdctl上使用

nerdctl的GitHub地址

  1. curl -LO https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
  2. tar xzvf nerdctl-0.22.2-linux-amd64.tar.gz
  3. cp nerdctl /usr/local/bin/
  4. rm -rf containerd-rootless* nerdctl

整体脚本

  1. #!/bin/bash
  2. echo "===========Installing containerd to /user/local===========" && \
  3. tar Cxzvf /usr/local containerd-1.6.6-linux-amd64.tar.gz && \
  4. mkdir -p /usr/local/lib/systemd/system/ && \
  5. echo "===========start containerd via systemd===========" && \
  6. curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /usr/local/lib/systemd/system/containerd.service && \
  7. systemctl daemon-reload && \
  8. systemctl enable --now containerd
  9. echo "===========install runc.amd64 to /usr/local/sbin/runc==========="
  10. curl -LO https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64 && \
  11. install -m 755 runc.amd64 /usr/local/sbin/runc
  12. echo "===========install cni==========="
  13. mkdir -p /opt/cni/bin && \
  14. tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz
  15. echo "===========generate containerd config==========="
  16. mkdir -p /etc/containerd && \
  17. containerd config default > /etc/containerd/config.toml && \
  18. sed -i "s#k8s.gcr.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml && \
  19. sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml && \
  20. sed -i '/registry.mirrors]/a\ \ \ \ \ \ \ \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]' /etc/containerd/config.toml && \
  21. sed -i '/registry.mirrors."docker.io"]/a\ \ \ \ \ \ \ \ \ \ endpoint = ["http://hub-mirror.c.163.com"]' /etc/containerd/config.toml && \
  22. sed -i '/hub-mirror.c.163.com"]/a\ \ \ \ \ \ \ \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]' /etc/containerd/config.toml && \
  23. sed -i '/"k8s.gcr.io"]/a\ \ \ \ \ \ \ \ \ \ endpoint = ["http://registry.aliyuncs.com/google_containers"]' /etc/containerd/config.toml && \
  24. echo "===========restart containerd to reload config===========" && \
  25. systemctl restart containerd

总结

本文详细介绍了containerd的安装配置。经过上一篇文章以及本文的铺垫,k8s节点的基础环境就算正式完成了。下一篇文章,将会介绍k8s节点怎么安装。

写在后面

如果觉得有用的话,麻烦一键三连支持一下攻城狮白玉,并把本文分享给更多的小伙伴。你的简单支持,我的无限创作动力

文章知识点与官方知识档案匹配,可进一步学习相关知识

与[转帖]【k8s】二、containerd的安装相似的内容:

[转帖]【k8s】二、containerd的安装

目录 前言 安装containerd 解压安装 配置成systemd任务 安装runc ​编辑 安装cni 配置containerd镜像源 containerd基本使用 拓展阅读 nerdctl工具安装及使用 整体脚本 总结 写在后面 前言 上一篇文章,我们介绍了虚拟机的基础环境以及基础的网络配置,

[转帖]K8S 问题排查: cgroup 内存泄露问题 - kmem

K8S 问题排查: cgroup 内存泄露问题 - kmemhttps://www.cnblogs.com/leffss/p/15019898.html 目录 前言 现象 原因 解决方案 方案一 方案二 方案三 验证方式 影响范围 原理解释 kmem 是什么 cgroup 与 kmem 机制 kme

[转帖]【k8s】5、资源管理命令-声明式

文章目录 一、 yaml和json介绍1、yuml语言介绍2、k8s支持的文件格式3、yaml和json的主要区别 二、声明式对象管理1、命令式对象配置2、声明式对象配置3、声明式对象管理命令介绍 三、编写资源配置清单1、 编写yaml文件2、 启动并查看资源3、创建service服务对外提供访问测

[转帖]【k8s】1、基础概念和架构及组件

文章目录 一、kubernetes概述1、什么是kubernetes?2、应用程序部署方式的演变3、为什么要用kubernetes? 二、kubernetes 特性三、Kubernetes集群架构与核心组件1、master组件1.1 kube-apiserver(中央枢纽)1.2 kube-cont

[转帖]10--k8s之数据持久化

https://www.cnblogs.com/caodan01/p/15136217.html 目录 一、emptDir 二、hostPath 三、pv 和 pvc 1.环境准备 2.创建pv 3.创建pvc 4.使用 5.综合案例 一、emptDir emptyDir类型的volume在pod分

[转帖]记一次靠谱的 K8S 排错实战过程,硬核!

http://blog.itpub.net/31545813/viewspace-2925035/ 一 背景 收到测试环境集群告警,登陆 K8s 集群进行排查。 二 故障定位 2.1 查看 Pod 查看 kube-system node2 节点 calico pod 异常。 查看详细信息,查看nod

[转帖]记一次靠谱的 K8S 排错实战过程,硬核!

http://blog.itpub.net/31545813/viewspace-2925035/ 一 背景 收到测试环境集群告警,登陆 K8s 集群进行排查。 二 故障定位 2.1 查看 Pod 查看 kube-system node2 节点 calico pod 异常。 查看详细信息,查看nod

[转帖]k8s发布Spring cloud+eureka架构服务优雅启动停止方案

本文转载自昆仑枫的简书https://www.jianshu.com/p/6d393cbb694a Spring cloud+eureka是目前微服务主流解决方案之一,kubernetes则是广泛应用的发布工具,两者结合使用很常见。而两者结合时如何优雅启停从而实现无感发布很关键。下面将从不做特殊处理

[转帖]K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

https://www.cnblogs.com/cheyunhua/p/15619317.html 一、Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序

[转帖]k8s部署有状态应用redis-cluster集群踩坑总结

https://segmentfault.com/a/1190000039196137 redis-cluster集群的部署网上一堆,用k8s部署也不在少数,但都是抄来抄去,问题不少,实际操作分享出来的还是太少。 1、redis启动配置文件,使用CofigMap来管理比较方便,redis-confi