5.2 kubernetes runtime部署及维护

2020-11-14  本文已影响0人  一瓶多先生

目录

01.介绍

kubernetes runtime一般是指容器生命周期的管理, 早起kubelet在创建容器的时候直接调用docker daemon, docker daemon调用自己的libcontainer就可以把容器启动起来, 但是随着后续rkt的加入出现了很多兼容性的问题, Container Runtime Interface(CRI)即程序运行时接口就这样出生了, 后续接入的runtime按照CRI的接口实现就可以了, 启动容器的过程中需要根据Open Container Initiative(OCI)即开放容器标准中的有关规定进行启动, 目前比较稳定的还是Docker并且Dockershim 核心代码依然保留在 kubelet 内部是最稳定和特性支持最好的运行时

目前官方文档中支持的如下:

OCI

OCI的runtime spec标准中对于容器的状态描述,以及对于容器的创建、删除、查看等操作进行了定义。 目前包括两个标准容器运行时标准和容器镜像标准, 简单的来说就是创建镜像的标准和运行容器的标准,

CRI

容器运行时插件(Container Runtime Interface,简称 CRI)容器运行时接口, 其中包括容器运行时和镜像的管理两个grpc接口, Kubelet 作为 CRI 的客户端,而容器运行时则需要实现 CRI 的服务端(即 gRPC server,通常称为 CRI shim)。容器运行时在启动 gRPC server 时需要监听在本地的 Unix Socket, 具体请看下图:

简单的来说就是容器的编排API调用CRI, CRI调用OCI启动容器

02.使用docker作为k8s runtime 时的启动流程

当kubelet要创建一个容器时,需要以下几步:

03.Docker 安装

卸载旧版本docker

$ yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
$ rm -rf /var/lib/docker #删除旧版本数据

安装依赖包

$ yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2yum

添加源,使用了阿里云镜像

$ yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ yum makecache fast  #配置元数据缓存

安装最新稳定版docker

$ yum install -y docker-ce

04.配置docker使用flannel网络

修改docker的配置文件/usr/lib/systemd/system/docker.service,增加如下几条环境变量配置:

EnvironmentFile=-/run/docker_opts.env
EnvironmentFile=-/run/flannel/subnet.env

systemd 维护

$ systemctl daemon-reload
$ systemctl start docker #启动docker引擎
$ systemctl enable docker #设置开机启动

番外篇配置加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF

05.Q&A

Q:
没有配置flannel之前启动了docker, 已经默认分配了网络, docker0使用bip分配的地址

"Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"

A:
查看/lib/systemd/system/docker.service文件发现启动命令没有调用/run/docker_opts.env中的${DOCKER_OPTS}, 需要将启动命令从

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

修改为

/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  $DOCKER_OPTS

Q:
修改docker的默认网段

A:
编辑/etc/docker/daemon.json添加如下内容

{
 "bip": "172.26.0.1/16"
}

重启docker服务

systemctl restart docker.service

参考

上一篇下一篇

猜你喜欢

热点阅读