2021-04-26
话说Kubernetes都要弃用Dockershim了,因此是时候学习Containerd了。
本文先简单整理一下Kubernetes、Docker、Containerd之间的渊源和纠葛。
1.Docker, OCI和Containerd
#
这里略过早期Docker的发展历史,大概就是在docker如日中天的时候,社区要搞容器化标准,成立了OCI(Open Container Initiaiv),OCI主要包含两个规范,一个是容器运行时规范(runtime-spec),一个是容器镜像规范(image-spec)。
docker的公司也在OCI中,这里略过在推动标准化过程中各大厂各自心里的"小算盘"和"利益考虑",docker在这个过程中由一个庞然大物逐渐拆分出了containerd
、runc
等项目,
docker公司将runc捐赠给了OCI,后来将containerd捐赠给了CNCF。
...2018-02-05
问题发现
#
最近测试环境Kubernetes集群的两台主机重启后,发现这两台主机上(CentOS 7.3)的Pod无法删除。
发现这个问题的经过如下:
某个服务的自动发布触发后,监控系统告警有Pod处于Terminated状态,具体去查看发现前面重启过的两台主机上因为服务发布需要被删掉的Pod一直处于Terminated: ExitCode
状态。因为是测试环境,开始没有特别关注,而是直接使用kubectl delete pod <podname> --namespace=<namspacer> --grace-period=0 --force
尝试将有问题Pod强制删除,结果强制删除不起作用。马上觉得问题可能没有那么简单,于是分别登录到这两台主机上通过docker ps -a
查看对应docker容器的状态,发现这两个Pod的docker容器处于Dead状态。使用docker rm <container id>
,提示Device is Busy
,无法删除。
...2017-04-22
通过前面对Ansible的学习,我们已经对Ansible的Playbook和Role有了初步的认识,接下来我们将在实践中慢慢把Ansible引入到我们的配置管理工作中来。
本篇是在我们的测试环境中使用Ansible安装Docker的记录。
目录结构
#
我们创建了一个名称为docker
的Ansible role:
...2017-02-25
本当记录按照Docker官方swarm-tutoria文档,配置和体验Docker Swarm Mode的过程。
准备
#
主机:
- manager1 - 192.168.61.10, CentOS7
- worker1 - 192.168.61.11, CentOS7
- worker2 - 192.168.61.12, CentOS7
Docker Engine > 1.12
开放端口2377 tcp端口, 7946 4789 tcp udp 端口
初始化集群(manager node)
#
在manager1上执行docker swarm init --advertise-addr 192.168.61.10
命令初始化集群:
...2017-01-24
Docker 1.13新功能
#
Docker 1.13在去年年底发布,是一个重要的版本。以下是Top 10新增功能:
- 正式支持服务栈: docker stack
- 正式支持插件: docker plugin
- 添加在Swarm集群环境下对密码、密钥管理的secret管理服务docker secret
- 增加docker system命令
- 可以直接使用docker-compose.yml进行服务部署
- 添加docker service滚动升级出现故障后回滚的功能
- 增加强制再发布选项docker service update --force
- 允许docker service create映射宿主端口,而不是边界负载均衡网络端口
- 允许docker run炼乳制定的swarm mode的overlay网络
- 解决中国GFW墙掉docker-engine apt/yum源的问题
Docker 1.13安装
#
官方的安装文档在内容也做了更新。
...2017-01-16
更新:直接参考Docker官方文档HTTP/HTTPS proxy即可
受限于网络环境,有的时候需要透过代理服务器pull docker镜像。
docker代理配置
#
修改Docker的systemd文件,添加http代理配置。
修改/lib/systemd/system/docker.service
...
2017-01-06
生成自签名证书
#
因为没有公网ip和域名,所以这里修改/etc/pki/tls/openssl.cnf以生成带SAN 扩展的证书。
在openssl.cnf文件中修改以下内容:
1[ v3_ca ]
2#指定ip
3subjectAltName=IP:192.168.61.100
创建证书目录:
...2016-02-07
Docker使用Linux Cgroups限制容器对CPU、内存等资源的使用,防止由于某个容器对资源的过度使用而导致主机上其他容器无法正常运行。
Cgroup是control group的简称,是Linux内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用,包括CPU、内存、block I/O、网络带宽。
...