## <div style="text-align: center">基于Containerd的k8s集群部署</div>
新版本的k8s已经抛弃了docker,而改用CRI接口管理容器,并且建议使用containerd作为容器运行时,所以这里我们跟上潮流,使用containerd作为容器组建
k8s集群,并且使用jenkins完成CI/CD流程。
注意:本文档的服务器环境是:Ubuntu 20.04 LTS Jammy版本
### k8s单master集群搭建
由于k8s集群用于测试环境,所以这里只需要使用Kubeadm搭建单master集群即可。如果要在正式环境上使用,需要搭建多master集群。集群规划如下:
| hostname | IP | 描述 |
|:--------------:|:---------------------:|:------------------------: |
| service-tools | 10.81.144.81 | Master(Control plane) |
| service-2 | 10.81.144.83 | node |
| service-3 | 10.81.144.84 | node |
| service-4 | 10.81.144.85 | node |
### <font color=red>注意,以下的软件都需要在所有集群节点上进行安装</font>
#### 1、安装Containerd
到containerd的github release页面上下载containerd安装包:https://github.com/containerd/containerd/releases
下载得到:
containerd-1.6.6-linux-amd64.tar.gz,解压,并将bin目录中的文件拷贝到/usr/local/bin中:
```shell
leoly@service-tools:~$ tar xf containerd-1.6.6-linux-amd64.tar.gz
leoly@service-tools:~$ ls -l bin/
total 138792
-rwxr-xr-x 1 root root 59592416 Jul 26 15:30 containerd
-rwxr-xr-x 1 root root 7389184 Jul 26 15:30 containerd-shim
-rwxr-xr-x 1 root root 9555968 Jul 26 15:30 containerd-shim-runc-v1
-rwxr-xr-x 1 root root 9580544 Jul 26 15:30 containerd-shim-runc-v2
-rwxr-xr-x 1 root root 25735456 Jul 26 15:30 containerd-stress
-rwxr-xr-x 1 root root 30265088 Jul 26 15:30 ctr
leoly@service-tools:~$ sudo cp -r bin/* /usr/local/bin/
```
创建containerd.service并设置为开机启动:
```shell
leoly@service-tools:~$ sudo vim /etc/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
# 这里需要修改为containerd的安装路径
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
leoly@service-tools:~$ sudo systemctl daemon-reload
leoly@service-tools:~$ sudo systemctl enable containerd --now
```
创建containerd的配置文件目录/etc/containerd,并生成默认的配置文件:
```shell
leoly@service-tools:~$ sudo mkdir /etc/containerd
leoly@service-tools:~$ sudo containerd config default > config.toml
leoly@service-tools:~$ sudo mv config.toml /etc/containerd/
```
修改config.toml文件,
```shell
leoly@service-tools:~$ sudo vim /etc/containerd/config.toml
```
找到`[plugins."io.containerd.grpc.v1.cri".registry]`,配置`config_path = "/etc/containerd/certs.d"`,
并删除`[plugins."io.containerd.grpc.v1.cri".registry.mirrors]`的下级配置,最后`[plugins."io.containerd.grpc.v1.cri".registry]`
项的配置如下:
```shell
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
[plugins."io.containerd.grpc.v1.cri".registry.auths]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.headers]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
```
找到`sandbox_image = `配置,将配置改为:`sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.7"`,
避免无法从国外镜像仓库拉取镜像。
创建certs.d文件夹,并在文件夹下增加两个仓库配置,一个是阿里云的主仓库`dxc7f1d6.mirror.aliyuncs.com`,
另一个是后面即将使用Docker Registry在此k8s集群上搭建的私有仓库`10.81.144.81:30000`。
我们事先约定好Docker Registry暴露的NodePort端口为:30000,并且不使用SSL的方式(即非HTTPS)搭建Docker Registry,
所以需要配置`skip_verify = true`。
```shell
leoly@service-tools:~$ sudo mkdir /etc/containerd/certs.d
leoly@service-tools:~$ sudo mkdir /etc/containerd/certs.d/dxc7f1d6.mirror.aliyuncs.com
leoly@service-tools:~$ sudo vim /etc/containerd/certs.d/dxc7f1d6.mirror.aliyuncs.com/hosts.toml
server = "https://dxc7f1d6.mirror.aliyuncs.com"
leoly@service-tools:~$ sudo mkdir /etc/containerd/certs.d/10.81.144.81:30000
leoly@service-tools:~$ sudo vim /etc/containerd/certs.d/10.81.144.81:30000/hosts.toml
server = "http://10.81.144.81:30000"
[host."http://10.81.144.81:30000"]
capabilities = ["pull","push","resolve"]
skip_verify = true
leoly@service-tools:~$ tree /etc/containerd/
/etc/containerd/
├── certs.d
│ ├── 10.81.144.81:30000
│ │ └── hosts.toml
│ └── dxc7f1d6.mirror.aliyuncs.com
│ └── hosts.toml
└── config.toml
3 directories, 3 files
```
重启containerd服务:
```shell
leoly@service-tools:~$ sudo systemctl restart containerd
# 查看服务启动状态
leoly@service-tools:~$ sudo systemctl status containerd
```
如果启动没有问题,containerd安装配置完成。
#### 2、安装runc
这里直接使用Ubuntu的包管理器进行安装:
```shell
leoly@service-tools:~$ sudo apt install runc
leoly@service-tools:~$ runc --version
runc version 1.1.0-0ubuntu1
spec: 1.0.2-dev
go: go1.17.3
libseccomp: 2.5.3
```
安装完成后,containerd就基本完成了。containerd的镜像管理工具是`ctr`:
```shell
leoly@service-tools:~$ ctr --help
NAME:
ctr -
__
_____/ /______
/ ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/
containerd CLI
USAGE:
ctr [global options] command [command options] [arguments...]
VERSION:
v1.6.6
...
```
`ctr`管理工具与`docker`的镜像管理工具使用起来还是有很多区别的,为了更加方便的进行管理,我们安装一款与`docker`
命令在使用上差不多一致的管理工具:`nerdctl`。
从github的release页面中下载最新版本:https://github.com/containerd/nerdctl/releases
得到`nerdctl-0.22.0-linux-amd64.tar.gz`,解压后,将`nerdctl`文件拷贝到`/usr/local/containerd/bin`下:
```shell
leoly@service-tools:~$ tar xvf nerdctl-0.22.0-linux-amd64.tar.gz
nerdctl
containerd-rootless-setuptool.sh
containerd-rootless.sh
# 这里我们不管那两个sh文件,因为不需要使用非root用户。
leoly@service-tools:~$ sudo mkdir /usr/local/containerd
leoly@service-tools:~$ sudo mkdir /usr/local/containerd/bin
leoly@service-tools:~$ sudo cp nerdctl /usr/local/containerd/bin
# 做一个软链接方便使用nerdctl工具。
leoly@service-tools:~$ sudo ln -s /usr/local/containerd/bin/nerdctl /usr/local/bin/nerdctl
leoly@service-tools:~$ sudo nerdctl version
Client:
Version: v0.22.0
OS/Arch: linux/amd64
Git commit: 8e278e2aa61a89d4e50d1a534217f264bd1a5ddf
buildctl:
Version: v0.10.3
GitCommit: c8d25d9a103b70dc300a4fd55e7e576472284e31
Server:
containerd:
Version: v1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.0-0ubuntu1
```
`nerdctl`工具的使用与`docker`命令基本一致,到此,`nerdctl`工具安装完成。
containerd中并未包含打包(build)工具,需要另外安装buildkit工具进行打包
k8s最新版本1.24.3基于containerd搭建集群,集成buildkit、nerdctl构建镜像,jenkins自动化。
5星 · 超过95%的资源 需积分: 47 119 浏览量
2022-08-03
10:41:19
上传
评论 1
收藏 46KB ZIP 举报
Leoly003
- 粉丝: 15
- 资源: 14
最新资源
- 基于Python的在线学习与推荐系统设计与实现(论文+源码)-kaic
- 蓝桥杯2024年第十五届省赛真题-前缀总分
- com.qihoo.appstore_300101305-1.apk
- tensorflow-gpu-2.7.1-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.1-cp39-cp39-manylinux2010-x86-64.whl
- 蓝桥杯2024年第十五届省赛真题-传送阵
- com.qihoo.appstore_300101305.apk
- linux之线程同步一.doc
- keil5配色方案10种
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论5