使用 kubeadm 部署 kubernetes
参考 一节安装 Docker。
安装 kubelet kubeadm kubectl
CentOS/Fedora
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
$ sudo yum install -y kubelet kubeadm kubectl
修改内核的运行参数
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
# 应用配置
$ sysctl --system
修改 kubelet.service
/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf
写入以下内容
执行以下命令应用配置。
$ sudo systemctl daemon-reload
部署
--pod-network-cidr 10.244.0.0/16 \
--v 5 \
--ignore-preflight-errors=all
--pod-network-cidr 10.244.0.0/16
参数与后续 CNI 插件有关,这里以flannel
为例,若后续部署其他类型的网络插件请更改此参数。
node 工作节点
在 另一主机 重复 部署 小节以前的步骤,安装配置好 kubelet。根据提示,加入到集群。
$ kubeadm join 192.168.199.100:6443 --token cz81zt.orsy9gm9v649e5lf \
查看服务
所有服务启动后,查看本地实际运行的 Docker 容器。这些服务大概分为三类:主节点服务、工作节点服务和其它服务。
主节点服务
apiserver
是整个系统的对外接口,提供 RESTful 方式供客户端和其它组件调用;scheduler
负责对资源进行调度,分配某个 pod 到某个节点上;
proxy
为 pod 上的服务提供访问的代理。
其它服务
- Etcd 是所有状态的存储数据库;
将 /etc/kubernetes/admin.conf
复制到 ~/.kube/config
执行 $ kubectl get all -A
查看启动的服务。
由于未部署 CNI 插件,CoreDNS 未正常启动。如何使用 Kubernetes,请参考后续章节。
部署 CNI
这里以 flannel
为例进行介绍。
flannel
$ kubectl get node -o yaml | grep CIDR
# 输出
podCIDR: 10.244.0.0/24
podCIDRs:
master 节点默认不能运行 pod
如果用 kubeadm
部署一个单节点集群,默认情况下无法使用,请执行以下命令解除限制
$ kubectl taint nodes --all node-role.kubernetes.io/master-