上次把内网的虚拟化清理掉了, 包括内网的一些服务全都没了, 这篇文章就记录一下 k8s 的搭建过程吧
准备
先把服务器准备好, 搭建 k8s 最小化的集群, 一个 master 2 个 node
- 机器
\\ | Master1 | Node1 | Node2 |
---|---|---|---|
CPU | 2 核心 | 2 核心 | 2 核心 |
内存 | 2G | 4G | 4G |
磁盘 | 30G 本地SSD | 30G 本地SSD | 30G 本地SSD |
磁盘给的不多, 后面需要数据持久化的时候远程挂在 NFS 存储即可,性能也给的不多, 后期按需求添加
- 系统 (Centos 7)
所有的均关闭了 SELinux, 防火墙
关闭 SELinux
在每一个节点上面运行以下命令, 以关闭 selinux
关闭防火墙
设置路由
设置转发
关闭 Swap 分区
安装
下面的所有步骤均按照 kubernetes 官方教程 操作, 且使用了代理, 未使用相关的国内镜像服务, 请在相关的 yum, docker 处做好 proxy
安装 DockerCE
先安装 yum-config-manager
添加仓库
安装 docker-ce
当前版本建议安装 18.09
的版本, 但是因为我头铁, 所以选最新的
安装kubeadm
在每一个节点上运行以下命令, 添加 kubernetes 的仓库
安装 kubeadm
启动 kubeadm
初始化
Master 节点
运行
如果出现了类似这样的提示
参照 Container runtimes 修复, 过程如下
然后按照 Configure cgroup driver used by kubelet on control-plane node进行修改
编辑 /etc/default/kubelet
文件添加
然后
亲测有效
如果发现镜像下载不下来
如果镜像拉取完成, 重新执行 init
操作, 完成之后如下
执行其中的
记录 Master 机器的这个信息以后要用到
Node 节点
在每个 node 节点上面运行上面 master 节点保存的 kubeadm join
,如果出现了问题, 参考上面 master 的处理方式进行操作
加入到 Master 的集群里面
这里我遇到了一个问题, 我忘记修改 hostname 了, 导致三个节点的 hostname 为同一个, 虽然下 join 的时候不会报错, 但是get nodes 的时候除了 master 其他的都不会显示, 修改方式为
hostnamectl set-hostname <hostname>
上面的所有操作完成之后 kubectl get nodes
如下图
不过这个时候所有的节点都处在 NotReady
的状态, 这时候还缺一个 网络插件, 这里我们安装flannel
在 Master 上面执行
等待完成之后 运行 kubectl get pods -A
可以看到 flannel 的组建都已经 Running, 这时候我们再查看一下 node 的状态
都已经 Ready,
致此, 基本安装已经结束