contained安装

通过containerd 来创建一个容器,会创建一个 containerd-shim 的进程(垫片),containerd-shim启动后会去启动/usr/bin/containerd-shim-runc-v2,然后立即退出,此时containerd-shim-runc-v2的父进程就变成了systemd(1),这样containerd-shim-runc-v2就和containerd脱离了关系,即便containerd退出也不会影响到容器(这也是containerd-shim套件的作用)。OCI标准(Open Container Initiative 开放容器协议)的具体实现就是runc,真正创建和维护容器最终便是由runc来完成的。/usr/bin/containerd-shim-runc-v2会启动runc去create、start容器,然后runc立即退出,容器的父进程就变成了containerd-shim-runc-v2,这也是容器内部可以看到的PID=1的进程。

containerd

https://github.com/containerd/containerd
https://github.com/containerd/containerd/releases
https://github.com/containerd/containerd/blob/main/docs/cri/crictl.md
https://github.com/containerd/containerd/blob/main/docs/getting-started.md

阅读全文 »

go环境安装

pprof工具是go tool里的工具, 所以需要提前安装golang环境

官方文档: https://go.dev/doc/install

1
2
3
4
$ wget https://go.dev/dl/go1.23.2.linux-amd64.tar.gz
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.23.2.linux-amd64.tar.gz
$ echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
$ source /etc/profile
阅读全文 »

背景

Dockershim从Kubernetes 1.20版本开始废弃,计划在Kubernetes 1.24版本移除,所以目前1.24+的ACK集群只能containerd作为运行时,但是docker build构建的镜像是可以正常使用的, docker build 创建的镜像适用于任何 CRI 实现, 参考 Dockershim Removal FAQ

本文介绍一下containerd运行的节点上如何拉取公共镜像镜像,私有仓库镜像,便于排查containerd节点的免密或者自建镜像仓库的镜像

工具介绍

提示 很多时候我们都可以通过–help来查看工具都提供了哪些功能,因为版本之间直接可能存在兼容性问题

本文对应的软件版本信息(基于阿里云的ACK)

ACK版本 containerd版本
v1.24.6-aliyun.1 containerd 1.6.20

containerd 支持的客户端工具有很多, 比如 ctr、nerdctl、crictl、能调用cri接口的如kubelet等,其中是ctr、nerdctl是不支持CRI Plugin,比如镜像加速, 但是可以通过--hosts-dir的方式指定

本文就通过介绍ctr和crictl, ACK 中默认安装的。

阅读全文 »

搭建各种云原生环境的过程中,经常需要生成证书,本文记录使用 openssl/cfssl 快速生成证书的方法。

使用 opessl 生成证书

测试证书: openssl s_client -connect 1.1.1.1:443 2> /dev/null | openssl x509 -text | grep -A 1 “X509v3 Subject Alternative Name:”

1
2
3
4
5
6
7
8
9
# 0.一气呵成,不产生csr
$ openssl req -newkey rsa:4096 \
-subj "/C=CN/ST=ZheJiang/L=HangZhou/O=ZMQ/OU=ZMQ Group/CN=*.zmq100.cn/emailAddress=zmq@zmq100.cn" \
-x509 \
-sha256 \
-days 3650 \
-nodes \
-out server.crt \
-keyout server.key
阅读全文 »

使用 cert-manager 签发免费证书

概述

随着 HTTPS 不断普及,越来越多的网站都在从 HTTP 升级到 HTTPS,使用 HTTPS 就需要向权威机构申请证书,需要付出一定的成本,如果需求数量多,也是一笔不小的开支。cert-manager 是 Kubernetes 上的全能证书管理工具,如果对安全级别和证书功能要求不高,可以利用 cert-manager 基于 ACME 协议与 Let’s Encrypt 来签发免费证书并自动续期,实现永久免费使用证书。

阅读全文 »

istio故障注入和熔断配置对应的config_dump位置

故障

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: reviews-route
namespace: io
spec:
gateways:
- bookinfo-gateway
- mesh
hosts:
- aaaa
- bookinfo.zmq100.cn
http:
- fault:
delay:
fixedDelay: 7s
percentage:
value: 100
name: aaaa
route:
- destination:
host: aaaa
port:
number: 80
subset: v1
阅读全文 »