Homelab篇章二:部署k3s
基础网络环境已经准备好了,本篇就简单介绍下k3s的安装过程,很简单仅作为备忘录~
文档地址:
还是简单分析下安装需求、选项:
- 基于netmaker构成的虚拟子网安装,所以node-ip就是netmaker分配的IP
- 节点外部IP就是公网IP
- fiannel使用的网络接口和node-ip接口对应,即wireguard的iface
- 穷人没有load balancer(lb需要云服务商提供),
直接不部署还是直接用rancher的servicelb好了 不用默认的traefik,想自己部署ingress-ngixtraefik v2真香!- 安装过程使用国内的加速 镜像,参考快速入门指南
- 推荐加
--cluster-init
参数,使用嵌入式etcd数据库,以便后期的迁移
控制平面部署
1 | curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server --node-ip <NETMAKER_IP> --node-external-ip <MASTER_PUBLIC_IP> --flannel-iface <NM_INTERFACE_NAME> --cluster-init |
控制平面最好是有公网IP的。网络插件就用了默认的flannel以及默认配置,flannel可配置项目较少,若有其他需求可以换。
当提示安装完成后,在/var/lib/rancher/k3s/server/node-token
路径下获取K3S_TOKEN
,下面部署Worker节点要用到。
Worker节点部署
<K3S_TOKEN>
:控制平面生成的TOKEN<MASTER_NODE_IP>
:即为控制平面的IP地址,可以选择的有netmaker内网IP或者域名、公网IP或者域名,我这里选择了netmaker内网域名<NETMAKER_IP>
:各自节点的netmaker内网的IP<NODE_PUBLIC_IP>
:各自节点的公网IP,没有就不写此项<NM_INTERFACE_NAME>
:各自节点上netmaker的interface名字,一般是nm-
开头的那个
有公网IP节点
1 | curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://<MASTER_NODE_IP>:6443 K3S_TOKEN=<K3S_TOKEN> sh -s - --node-ip <NETMAKER_IP> --flannel-iface <NM_INTERFACE_NAME> --node-external-ip <NODE_PUBLIC_IP> |
无公网IP节点
1 | curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://<MASTER_NODE_IP>:6443 K3S_TOKEN=<K3S_TOKEN> sh -s - --node-ip <NETMAKER_IP> --flannel-iface <NM_INTERFACE_NAME> |
检验安装
待全部节点安装完成后,在控制平面上运行kubectl get nodes -o wide
查看节点状态
全部显示ready就是可以了~在每个节点上运行个sleep pod:
1 | apiVersion: v1 |
完美~
分别进入这三个pod,测试下网络
可以看到都是通的,只是没有公网ip的节点网络状态不太好,似乎由于UDP打洞带来的延迟,刚开始的数据包是会丢掉的~没辙
本地kubectl配置
要操作k3s集群不可能每次都登陆控制平面是吧~在本地安装kubectl命令行工具就行了,然后将控制平面上的/etc/rancher/k3s/k3s.yaml
复制到集群外部的计算机上的~/.kube/config
并将其中的localhost修改为控制平面的IP或者域名并开放6443端口即可。
对于有多个集群管理的需要,推荐kubecm这个项目,地址在这里。这个工具可以合并多个config文件并且支持快速切换集群,就很偷懒~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CLEMONの小栈!
评论