kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。
这个工具能通过两条指令完成一个 kubernetes 集群的部署:
1 | # 创建一个 Master 节点 |
1. 安装要求
在开始之前,部署 Kubernetes 集群机器需要满足以下几个条件:
- 一台或多台机器,操作系统 CentOS7.x-86_x64
- 硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多
- 集群中所有机器之间网络互通
- 可以访问外网,需要拉取镜像
- 禁止 swap 分区
2. 学习目标
- 在所有节点上安装 Docker 和 kubeadm
- 部署 Kubernetes Master
- 部署容器网络插件
- 部署 Kubernetes Node,将节点加入 Kubernetes 集群中
- 部署 Dashboard Web 页面,可视化查看 Kubernetes 资源
3. 准备环境
1 | 关闭防火墙: |
4. 所有节点安装 Docker/kubeadm/kubelet
Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装 Docker。
4.1 安装 Docker
1 | $ wget <https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo> -O /etc/yum.repos.d/docker-ce.repo |
4.2 添加阿里云 YUM 软件源
1 | $ cat > /etc/yum.repos.d/kubernetes.repo << EOF |
4.3 安装 kubeadm,kubelet 和 kubectl
由于版本更新频繁,这里指定版本号部署:
1 | $ yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0 |
5. 部署 Kubernetes Master
在 192.168.31.61(Master)执行。
1 | $ kubeadm init \\ |
由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址。
使用 kubectl 工具:
1 | mkdir -p $HOME/.kube |
6. 安装 Pod 网络插件(CNI)
1 | $ kubectl apply -f <https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml> |
确保能够访问到 quay.io 这个 registery。
如果 Pod 镜像下载失败,可以改成这个镜像地址:lizhenliang/flannel:v0.11.0-amd64
7. 加入 Kubernetes Node
在 192.168.31.62/63(Node)执行。
向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令:
1 | $ kubeadm join 192.168.31.61:6443 --token esce21.q6hetwm8si29qxwn \\ |
8. 测试 kubernetes 集群
在 Kubernetes 集群中创建一个 pod,验证是否正常运行:
1 | $ kubectl create deployment nginx --image=nginx |
访问地址:http://NodeIP:Port
9. 部署 Dashboard
1 | $ kubectl apply -f <https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml> |
默认 Dashboard 只能集群内部访问,修改 Service 为 NodePort 类型,暴露到外部:
1 | kind: Service |
访问地址:http://NodeIP:30001
创建 service account 并绑定默认 cluster-admin 管理员集群角色:
1 | kubectl create serviceaccount dashboard-admin -n kube-system |
使用输出的 token 登录 Dashboard。