成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【云原生】Containerd ctr 和 crictl 客戶端命令介紹與實戰(zhàn)操作(nerdctl )

云計算 云原生
ctr images pull 拉取的鏡像默認放在default,而crictl pull 和 kubelet 默認拉取的鏡像都在k8s.io命名空間下。所以通過ctr導入鏡像的時候特別注意一點,最好指定命名空間。

一、概述

作為接替Docker運行時的Containerd在早在Kubernetes1.7時就能直接與Kubelet集成使用,只是大部分時候我們因熟悉Docker,在部署集群時采用了默認的dockershim。在V1.24?起的版本的kubelet就徹底移除了dockershim?,改為默認使用Containerd?了,當然也可以使用 cri-dockerd? 適配器來將 Docker Engine 與 Kubernetes 集成??梢詤⒖脊俜轿臋n。

圖片

二、Containerd 常見命令操作

更換Containerd后,以往我們常用的docker命令也不再使用,取而代之的分別是 crictl? 和 ctr 兩個命令客戶端。

  • crictl? 是遵循CRI接口規(guī)范的一個命令行工具,通常用它來檢查和管理kubelet節(jié)點上的容器運行時和鏡像。
  • ctr? 是 containerd 的一個客戶端工具。
  • ctr -v? 輸出的是 containerd 的版本,crictl -v 輸出的是當前 k8s 的版本,從結果顯而易見你可以認為 crictl 是用于 k8s 的。
  • 一般來說你某個主機安裝了 k8s 后,命令行才會有 crictl 命令。而 ctr 是跟 k8s 無關的,你主機安裝了 containerd 服務后就可以操作 ctr 命令。

使用crictl?命令之前,需要先配置/etc/crictl.yaml如下:

runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false

也可以通過命令進行設置:

crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl config image-endpoint unix:///run/containerd/containerd.sock

命令

docker

ctr(containerd)

crictl(kubernetes)

查看運行的容器

docker ps

ctr task ls/ctr container ls

crictl ps

查看鏡像

docker images

ctr image ls

crictl images

查看容器日志

docker logs


crictl logs

查看容器數(shù)據信息

docker inspect

ctr container info

crictl inspect

查看容器資源

docker stats


crictl stats

啟動/關閉已有的容器

docker start/stop

ctr task start/kill

crictl start/stop

運行一個新的容器

docker run

ctr run

無(最小單元為pod)

打標簽

docker tag

ctr image tag


創(chuàng)建一個新的容器

docker create

ctr container create

crictl create

導入鏡像

docker load

ctr image import


導出鏡像

docker save

ctr image export


刪除容器

docker rm

ctr container rm

crictl rm

刪除鏡像

docker rmi

ctr image rm

crictl rmi

拉取鏡像

docker pull

ctr image pull

ctictl pull

推送鏡像

docker push

ctr image push


登錄或在容器內部執(zhí)行命令

docker exec


crictl exec

清空不用的容器

docker image prune


crictl rmi --prune

更多命令操作,可以直接在命令行輸入命令查看幫助。

docker --help
ctr --help
crictl --help

由于Containerd也有namespaces的概念,對于上層編排系統(tǒng)的支持,ctr? 客戶端 主要區(qū)分了3個命名空間分別是k8s.io、moby和default?,以上我們用crictl?操作的均在k8s.io?命名空間,使用ctr? 看鏡像列表就需要加上-n參數(shù)。crictl是只有一個k8s.io命名空間,但是沒有-n參數(shù)。

【溫馨提示】ctr images pull 拉取的鏡像默認放在default?,而crictl pull 和 kubelet 默認拉取的鏡像都在k8s.io命名空間下。所以通過ctr導入鏡像的時候特別注意一點,最好指定命名空間。

# 注意-n不能放在命令最后面,下面幾行查看的鏡像是一樣的
ctr -n=k8s.io image ls
ctr -n k8s.io image ls

# crictl 沒有-n參數(shù),操作都在`k8s.io`命名空間下。
crictl image ls
crictl images
# crictl image list = ctr -n=k8s.io image list
# crictl image ls = ctr -n=k8s.io image ls
# crictl images = ctr -n=k8s.io image list
# crictl images = ctr -n=k8s.io image ls

# 使用ctr命令指定命名空間導入鏡像
ctr -n=k8s.io image import dashboard.tar

#查看鏡像,可以看到可以查詢到了
crictl images

圖片

三、container 客戶端工具 nerdctl

推薦使用nerdctl,使用效果與docker命令的語法一致github下載鏈接:https://github.com/containerd/nerdctl/releases

  • 精簡 (nerdctl--linux-amd64.tar.gz): 只包含nerdctl
  • 完整 (nerdctl-full--linux-amd64.tar.gz): 包含 containerd, runc, and CNI等依賴

nerdctl 的目標并不是單純地復制 docker 的功能,它還實現(xiàn)了很多 docker 不具備的功能,例如延遲拉取鏡像(lazy-pulling)、鏡像加密(imgcrypt)等。具體看nerdctl。

圖片

延遲拉取鏡像功能可以參考這篇文章:Containerd 使用 Stargz Snapshotter 延遲拉取鏡像

1)安裝 nerdctl(精簡版)

wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
# 解壓
tar -xf nerdctl-0.22.2-linux-amd64.tar.gz

ln -s /opt/k8s/nerdctl/nerdctl /usr/local/bin/nerdctl

2)安裝 nerdctl(完整版,這里不裝)

wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-full-0.22.2-linux-amd64.tar.gz
tar -xf nerdctl-full-0.16.0-linux-amd64.tar.gz -C /usr/local/

cp /usr/local/lib/systemd/system/*.service /etc/systemd/system/

啟動服務buildkit

systemctl enable  buildkit containerd --now
systemctl status buildkit containerd

3)安裝 buildkit 支持構建鏡像

buildkit GitHub地址:https://github.com/moby/buildkit

使用精簡版 nerdctl無法直接通過containerd構建鏡像,需要與buildkit組全使用以實現(xiàn)鏡像構建。當然你也可以安裝上面的完整nerdctl;buildkit項目是Docker公司開源出來的一個構建工具包,支持OCI標準的鏡像構建。它主要包含以下部分:

  • 服務端buildkitd,當前支持runc和containerd作為worker,默認是runc;
  • 客戶端buildctl,負責解析Dockerfile,并向服務端buildkitd發(fā)出構建請求。

buildkit是典型的C/S架構,client和server可以不在一臺服務器上。而nerdctl在構建鏡像方面也可以作為buildkitd的客戶端。

# https://github.com/moby/buildkit/releases
wget https://github.com/moby/buildkit/releases/download/v0.10.4/buildkit-v0.10.4.linux-amd64.tar.gz

tar -xf buildkit-v0.10.4.linux-amd64.tar.gz -C /usr/local/

配置buildkit的啟動文件,可以從這里下載:https://github.com/moby/buildkit/tree/master/examples/systemdbuildkit需要配置兩個文件

  • /usr/lib/systemd/system/buildkit.socket
cat > /usr/lib/systemd/system/buildkit.socket <<EOF
[Unit]
Descriptinotallow=BuildKit
Documentatinotallow=https://github.com/moby/buildkit
[Socket]
ListenStream=%t/buildkit/buildkitd.sock
SocketMode=0660
[Install]
WantedBy=sockets.target
EOF
  • /usr/lib/systemd/system/buildkit.service
cat > /usr/lib/systemd/system/buildkit.service << EOF
[Unit]
Descriptinotallow=BuildKit
Requires=buildkit.socket
After=buildkit.socket
Documentatinotallow=https://github.com/moby/buildkit
[Service]
# Replace runc builds with containerd builds
ExecStart=/usr/local/bin/buildkitd --addr fd://
[Install]
WantedBy=multi-user.target
EOF

啟動buildkit

systemctl daemon-reload
systemctl enable buildkit --now

圖片

四、實戰(zhàn)操作

1)修改containerd配置文件

可以參考我之前的文章:【云原生.大數(shù)據】鏡像倉庫Harbor對接MinIO對象存儲

containerd config default > /etc/containerd/config.toml

配置如下:

[plugins."io.containerd.grpc.v1.cri".registry]
config_path = ""

[plugins."io.containerd.grpc.v1.cri".registry.auths]

[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."myharbor-minio.com".tls]
insecure_skip_verify = true #跳過認證
ca_file = "/etc/containerd/myharbor-minio.com/ca.crt"
[plugins."io.containerd.grpc.v1.cri".registry.configs."myharbor-minio.com".auth]
username = "admin"
password = "Harbor12345"

[plugins."io.containerd.grpc.v1.cri".registry.headers]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."myharbor-minio.com"]
endpoint = ["https://myharbor-minio.com"]

圖片

重啟containerd

#重新加載配置
systemctl daemon-reload
#重啟containerd
systemctl restart containerd

注意:這個配置文件是給crictl和kubelet?使用,ctr是不可以用這個配置文件的,ctr 不使用 CRI,因此它不讀取plugins."io.containerd.grpc.v1.cri"配置。

2)ctr 拉取推送鏡像

# 推送鏡像到harbor
ctr --namespace=k8s.io images push myharbor-minio.com/bigdata/minio:2022.8.22-debian-11-r0 --skip-verify --user admin:Harbor12345

# --namespace=k8s.io 指定命名空間,不是必須,根據環(huán)境而定
# --skip-verify 跳過認證
# --user 指定harbor用戶名及密碼

ctr images pull --user admin:Harbor12345 --tlscacert=/etc/containerd/myharbor-minio.com/ca.crt myharbor-minio.com/bigdata/minio:2022.8.22-debian-11-r0

不想-u user:password每次必須使用 ctr pull/ctr push, 可以使用nerdctl 。

3)鏡像構建

cat > Dockerfile <<EOF
FROM nginx:alpine
RUN echo 'Hello Nerdctl From Containerd' > /usr/share/nginx/html/index.html
EOF

然后在文件所在目錄執(zhí)行鏡像構建命令:

# 不加-n指定命名空間,crictl看不到,kubelet也不能使用它,默認在default命名空間下
nerdctl -n k8s.io build -t nginx:nerctl -f ./Dockerfile .
### 參數(shù)解釋
# -t:指定鏡像名稱
# . :當前目錄Dockerfile
# -f:指定Dockerfile路徑
# --no-cache:不緩存

圖片

4)打標簽 tag

# crictl沒有tag命令,只能使用nerdctl和ctr,必須指定命名空間,要不然kubelet無法使用。
ctr -n k8s.io i tag
nerdctl -n k8s.io tag nginx:nerctl myharbor-minio.com/bigdata/nginx:nerctl
# ctr -n k8s.io tag nginx:nerctl myharbor-minio.com/bigdata/nginx:nerctl
# 查看鏡像
nerdctl -n k8s.io images myharbor-minio.com/bigdata/nginx:nerctl

5)將鏡像推送到 Harbor

第一種情況:http方式,配置如下:

# 以下兩個哪個都可以
# mkdir -p /etc/docker/certs.d/myharbor-minio.com:443
mkdir -p /etc/containerd/certs.d/myharbor-minio.com:443

cat > /etc/containerd/certs.d/myharbor-minio.com\:443/hosts.toml <<EOF
server = "https://docker.io"

[host."http://myharbor-minio.com:80"]
capabilities = ["pull", "resolve","push"]
#skip_verify = true
#ca = "ca.crt" #相對路徑
#ca = "/opt/auth/ca.crt" #絕對路徑
#ca = ["/opt/auth/ca.crt"]
#ca = ["ca.crt"]
#client = [["/opt/auth/nginx.cclinux.cn.crt", "/opt/auth/nginx.cclinux.cn.key"]]

EOF

第一種情況:https方式,配置如下:

# 以下兩個哪個都可以
# mkdir -p /etc/docker/certs.d/myharbor-minio.com:443
mkdir -p /etc/containerd/certs.d/myharbor-minio.com:443

cat > /etc/containerd/certs.d/myharbor-minio.com\:443/hosts.toml <<EOF
server = "https://docker.io"

[host."https://myharbor-minio.com:443"]
capabilities = ["pull", "resolve","push"]
skip_verify = true
#ca = "ca.crt" #相對路徑
#ca = "/opt/auth/ca.crt" #絕對路徑
#ca = ["/opt/auth/ca.crt"]
ca = ["/etc/containerd/myharbor-minio.com/ca.crt"]
#client = [["/opt/auth/nginx.cclinux.cn.crt", "/opt/auth/nginx.cclinux.cn.key"]]
EOF

通過 nerdctl 登錄 harbor

echo Harbor12345 | nerdctl login --username "admin" --password-stdin  myharbor-minio.com:443

# nerdctl login --username "admin" --password Harbor12345 myharbor-minio.com:443

# 登出
# nerdctl logout

圖片

開始將鏡像推送到harbor

### 推送到Harbor
# --insecure-registry skips verifying HTTPS certs, and allows falling back to plain HTTP
nerdctl --insecure-registry --namespace=k8s.io push myharbor-minio.com/bigdata/nginx:nerctl
# ctr --namespace=k8s.io images push myharbor-minio.com/bigdata/nginx:nerctl --skip-verify --user admin:Harbor12345

# --namespace=k8s.io 指定命名空間,跟-n一樣,不是必須,根據環(huán)境而定
# --skip-verify 跳過認證
# --user 指定harbor用戶名及密碼

? 圖片 ?

責任編輯:武曉燕 來源: 大數(shù)據與云原生技術分享
相關推薦

2022-08-30 15:29:51

crictlnerdctl命令

2023-12-21 17:11:21

Containerd管理工具命令行

2023-03-27 07:43:35

2022-12-13 09:01:50

云原生組件數(shù)據

2010-07-19 16:30:19

Telnet客戶端

2019-05-22 09:03:44

PC客戶端Windows

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2010-05-31 10:11:32

瘦客戶端

2021-08-27 06:41:34

Docker ContainerdRun&Exec

2010-07-01 14:52:42

Linux grep命

2010-07-19 17:53:57

Telnet客戶端

2010-07-27 15:59:04

NFS Server

2010-02-22 09:03:22

零客戶端瘦客戶端VDI終端

2023-03-06 07:19:50

2010-03-18 17:47:07

Java 多客戶端通信

2010-08-31 16:29:40

DHCP客戶端

2011-08-17 10:10:59

2021-04-21 06:03:32

云函數(shù) Todo 重構Vue 客戶

2010-12-17 10:16:33

OpenVAS

2023-03-02 07:37:53

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品久久 | 黄网址在线观看 | 国产精品v | 99国内精品久久久久久久 | 久久不卡区 | av中文字幕在线 | 黑人巨大精品欧美一区二区一视频 | 日本精品一区二区 | 国产精品久久久久久久免费观看 | 亚洲一区二区三 | 颜色网站在线观看 | 免费同性女女aaa免费网站 | 91久久精品一区二区二区 | 天堂一区二区三区 | 免费av观看 | 91久久久久| jdav视频在线观看免费 | 一区二区三区亚洲 | 欧美精品久久久 | 天堂中文av | 亚洲综合热 | 精品国产久 | 日韩在线不卡 | 999久久久免费精品国产 | 国产高清免费在线 | 精品国产一区二区三区四区在线 | 色欧美片视频在线观看 | 中文字幕在线国产 | 亚洲精品成人在线 | 99精品久久| av国产精品毛片一区二区小说 | 亚洲电影免费 | 国产97碰免费视频 | 国产三级日本三级 | 黄片毛片在线观看 | 免费视频久久 | 高清视频一区二区三区 | 欧美一区二| 美国黄色毛片 | 国产精品久久久久久影视 | 欧美片网站免费 |