青蛙小白

查看Linux系统cgroup的版本

最近Docker Engine v29.0.0 和 containerd 2.2.0 均宣布 cgroup v1 is deprecated,支持将持续到 2029 年 5 月,但建议尽快迁移到 cgroup v2。 对于运维团队来说,现在就是规划迁移的最佳时机。 什么是 cgroup cgroup (Control Groups) 是 Linux 内核提供的一种资源管理机制,用于限制、记录和隔离进程组使用的物理资源。它是容器技术的核心基础之一,Docker、Kubernetes 等容器平台都依赖 cgroup 来实现资源隔离和限制。

重学容器01: Docker、Containerd、Kubernetes之间的渊源

话说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。

Kubernetes Pod无法删除,Docker: Device is busy问题的解决

问题发现 最近测试环境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,无法删除。

配置和体验Docker Swarm

本当记录按照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 Get Docker for CentOS Docker 1.13安装 开放端口2377 tcp端口, 7946 4789 tcp udp 端口 初始化集群(manager node) 在manager1上执行docker swarm init --advertise-addr 192.168.61.10命令初始化集群: docker swarm init --advertise-addr 192.168.61.10 Swarm initialized: current node (jqcx4dbr1y00espou3mtmp6m3) is now a manager. To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-55deh9541886sn6qsnwa2xq62f0s8k5urdbje8sqerhmb0b33e-8cgailtk9yzt7am7gfjh64foc \ 192.168.61.10:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. 当前节点被切换成swarm模式,同时作为集群的manager节点。集群中的其他节点通过advertise-addr访问manager节点。使用docker info查看swarm状态:

Docker 1.13安装和新功能

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安装 官方的安装文档在内容也做了更新。