使用 kubeadm 部署 kubernetes(CRI 使用 containerd)
kubeadm 提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。
安装 containerd
参考 安装 Docker 一节添加 apt/yum 源,之后执行如下命令。
# debian 系
$ sudo apt install containerd.io
# rhel 系
$ sudo yum install containerd.io配置 containerd
新建 /etc/systemd/system/cri-containerd.service 文件
[Unit]
Description=containerd container runtime for kubernetes
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd --config //etc/cri-containerd/config.toml
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target新建 /etc/cri-containerd/config.toml containerd 配置文件
安装 kubelet kubeadm kubectl cri-tools kubernetes-cni
Ubuntu/Debian
CentOS/Fedora
修改内核的运行参数
配置 kubelet
修改 kubelet.service
kubelet.service/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf 写入以下内容
执行以下命令应用配置。
部署
master
--pod-network-cidr 10.244.0.0/16参数与后续 CNI 插件有关,这里以flannel为例,若后续部署其他类型的网络插件请更改此参数。
执行可能出现错误,例如缺少依赖包,根据提示安装即可。
执行成功会输出
node 工作节点
在 另一主机 重复 部署 小节以前的步骤,安装配置好 kubelet。根据提示,加入到集群。
查看服务
所有服务启动后,通过 crictl 查看本地实际运行的容器。这些服务大概分为三类:主节点服务、工作节点服务和其它服务。
主节点服务
apiserver是整个系统的对外接口,提供 RESTful 方式供客户端和其它组件调用;scheduler负责对资源进行调度,分配某个 pod 到某个节点上;controller-manager负责管理控制器,包括 endpoint-controller(刷新服务和 pod 的关联信息)和 replication-controller(维护某个 pod 的复制为配置的数值)。
工作节点服务
proxy为 pod 上的服务提供访问的代理。
其它服务
Etcd 是所有状态的存储数据库;
使用
将 /etc/kubernetes/admin.conf 复制到 ~/.kube/config
执行 $ kubectl get all -A 查看启动的服务。
由于未部署 CNI 插件,CoreDNS 未正常启动。如何使用 Kubernetes,请参考后续章节。
部署 CNI
这里以 flannel 为例进行介绍。
flannel
检查 podCIDR 设置
master 节点默认不能运行 pod
如果用 kubeadm 部署一个单节点集群,默认情况下无法使用,请执行以下命令解除限制
参考文档
Last updated