从零搭建K8S

名称

数量

IP

备注

master

1

172.17.0.14

操作系统: Linux(centos7, 其它操作系统也可, 安装过程类似, 可参考官方文档) 机器配置: 4C8G

node1

1

172.18.0.7

同上

node2

1

172.19.0.5

同上

由于本人很穷,这几台机器是分别属于不同的腾讯云账号,不同的账号之间不能内网通信,不过可以通过建立“对等连接”实现通信,比直接用公网通信靠谱。

1. 修改hostname

 [root@k8s-master ~]$ vim /etc/hostname # 修改hostname
 [root@k8s-master ~]$ vim /etc/hosts # 将本机IP指向hostname
 [root@k8s-master ~]$ reboot -h    # 重启(可以做完全部前期准备后再重启)

修改后:

 [root@k8s-master ~]# cat /etc/hosts
 
 ::1 VM_0_5_centos VM_0_5_centos
 ::1 localhost.localdomain localhost
 ::1 localhost6.localdomain6 localhost6
 
 127.0.0.1 localhost localhost.localdomain k8s-master
 172.17.0.14 k8s-master
 172.18.0.7 k8s-node1
 172.19.0.5 k8s-node2

2. 配置防火墙

笔者图方便, 直接关闭了防火墙. 若安全要求较高, 可以参考官方文档放行必要端口.

3. 禁用SELinux

腾讯云centos7.6默认是禁止的,如果你的不是,请修改/etc/selinux/config, 设置SELINUX=disabled. 重启机器.

4. 禁用交换分区

腾讯云centos7.6默认是禁止的,如果你的不是,请编辑/etc/fstab, 将swap注释掉. 重启机器.

5. 安装Docker

方法一: 官方安装脚本自动安装

方法二: 手动安装

配置docker:

安装配置完毕后执行:

6. 安装Kubernetes

由于国内网络原因, 官方文档中的地址不可用, 本文替换为阿里云镜像地址, 执行以下代码即可:

安装kubeadm,kubelet,kubectl:

修改网络配置:

[su_highlight]注意: 至此, 以上的全部操作, 在Worker机器上也需要执行. 注意hostname等不要相同.[/su_highlight]

7. 初始化Master

该文件有两处需要修改:

advertiseAddress: 1.2.3.4修改为本机地址 将imageRepository: k8s.gcr.io修改为imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

下载镜像:

执行初始化:

等待执行完毕后, 会输出如下内容:

最后两行需要保存下来, kubeadm join ...是worker节点加入所需要执行的命令.

接下来配置环境, 让当前用户可以执行kubectl命令:

测试一下: 此处的NotReady是因为网络还没配置.

8. 配置网络

下载描述文件:

打开calico.yaml, 将192.168.0.0/16修改为10.96.0.0/12

img

[su_highlight]需要注意的是, calico.yaml中的IP和kubeadm-init.yaml需要保持一致, 要么初始化前修改kubeadm-init.yaml, 要么初始化后修改calico.yaml.[/su_highlight]

执行kubectl apply -f calico.yaml初始化网络.

此时查看node信息, master的状态已经是Ready了.

9. 安装Dashboard

91. 部署Dashboard

部署完毕后, 执行kubectl get pods --all-namespaces查看pods状态

9.2 创建用户

创建一个用于登录Dashboard的用户. 创建文件dashboard-adminuser.yaml内容如下:

执行命令kubectl apply -f dashboard-adminuser.yaml.

9.3 生成证书

第三条命令生成证书时会提示输入密码, 可以直接两次回车跳过.

kubecfg.p12即需要导入客户端机器的证书. 将证书拷贝到客户端机器上, 导入即可. chrome浏览器按下图所示导入:

img

此时我们可以登录面板了, 访问地址: https://{k8s-master-ip}:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

img
img

9.4 登录Dashboard

执行kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}'), 获取Token.

复制该Token到登录页, 点击登录即可, 效果如下:

img

10. 添加Node节点

执行如下命令将Worker加入集群:

注意: 此处的秘钥是初始化Master后生成的, 参考前文.

如果token过期,使用如下命令重新生成:

参考连接:kubeadm 生成的token过期后,集群增加节点

如果join时报错:[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1 执行如下命令:

参考链接:kubernetes 加入子节点

添加完毕后, 在Master上查看节点状态:

在面板上也可查看:

img

配置node节点,以便node节点能够执行类似kubectl get node的时候不至于报The connection to the server localhost:8080 was refused - did you specify the right host or port?

在node节点上执行:

参考链接

https://juejin.im/post/5d7fb46d5188253264365dcf

最后更新于

这有帮助吗?