从零搭建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-node22. 配置防火墙
笔者图方便, 直接关闭了防火墙. 若安全要求较高, 可以参考官方文档放行必要端口.
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

[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浏览器按下图所示导入:

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


9.4 登录Dashboard
执行kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}'), 获取Token.
复制该Token到登录页, 点击登录即可, 效果如下:

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上查看节点状态:
在面板上也可查看:

配置node节点,以便node节点能够执行类似kubectl get node的时候不至于报The connection to the server localhost:8080 was refused - did you specify the right host or port?
在node节点上执行:
参考链接
最后更新于
这有帮助吗?