20230204尝试搭建k8s青春版

视频版

https://www.bilibili.com/video/BV1qj411T7d5/

背景

之前一直想搭建k8s,但按多年前的印象这玩意很复杂。今天先尝试个青春版k3s

安装准备

按文档说是离线在线都行,离线的需要个私有的镜像中心,但镜像中心最简便的搭建方式是跑个容器。。。死循环了啊,所以先试在线的。

家里的资源不多,尝试做个乞丐版,2~3节点就行了,先弄单机后面再加worker

环境要求

硬件按文档建议是最少1c1g,我就给2c2g吧,机器数量是2

系统要求Ubuntu是22.04

可以使用 --with-node-id 给每个节点后面增加一个随机的后缀。或者使用命令行参数 --node-name 或环境变量 $K3S_NODE_NAME 给集群的每个节点传递唯一的名字

网络每个节点需要6443 可以被访问

Flannel VXLAN 节点间通过 UDP 8472 通信

Flannel Wireguard backend 节点间通过 UDP  51820(ipv4) 51821(ipv6)

安装过程

主节点安装过程如上,疑似成功。。。

查看进程如下,可以看到/run/k3s/containerd/containerd.sock说明containerd已经在运行了

metrics-server不知道是干什么的,后面再翻翻文档。

网络监听情况如下,可以看到大部分都是本地监听,只有10250 6443是有可能对外开放的

按文档描述是个TCP的端口监听,看起来和metrics server进程有关,好像是kubelet在节点之间通讯使用的。官方原文:If you wish to utilize the metrics server, all nodes must be accessible to each other on port 10250.

6443是TCP的监听,流量方向是从Agent向Server的,应该是worker节点向master注册数据用的。官方描述为 supervisor and Kubernetes API Server

按文档所说配置文件内容如下

按文档描述会生成这几个相关命令kubectl, crictl, k3s-killall.sh, and k3s-uninstall.sh。具体位置如下,均在/usr/local/bin下,所以可以从任意目录执行。

说实话k3s-killall.sh和k3s-uninstall.sh感觉并不适合放进这个位置,不知道是不是官方怕你找不到故意也放bin里了,这俩实际生产场景下完全没有全局任意目录运行的必要。万一误执行了就GG

尝试获取当前集群的节点,虽然知道只有一个,但需要看看命令是不是能正常执行,别和之前有的服务一样看着没事但实际没正常运行。。。。

这里有个需要关注的东西就是ROLES都有啥,需要看文档了。目前的control-plane顾名思义是控制面, master是主节点。不知道k8s的角色分配是不是和CDH一样能灵活转移。。。

查看TOKEN,准备安装第一个worker节点,按文档描述在这里/var/lib/rancher/k3s/server/node-token

注意,我在一个隔离环境测试,所以/var/lib/rancher/k3s/server/node-token和/etc/rancher/k3s/k3s.yaml的内容暴露了无所谓,待会会直接删除虚机,生产的千万不要轻易暴露。

按要求拼接worker的安装命令如下,到第二个机器上执行

执行到systemd卡住了(后面已确认只是单纯的慢)

再开一个shell查看进程如下

根据systemd服务注册的命令/usr/local/bin/k3s agent,可以看到大概率是执行systemctl restart k3s-agent卡住的

token本身错的可能性不大,所以大概率是K3S_URL的问题,因为我用了本地的DNS,所以写的是域名。尝试配置下HOSTS试试

保险起见我去 /var/lib/rancher/k3s/agent/containerd/containerd.log看了下,居然还在执行东西。。。难道只是单纯的慢?这时候主节点已经能看到agent了,但ROLES里是none让我比较纠结是不是正常

根据命令行参数打印更加详细的节点信息如下,这样看起来worker工作是正常的

测试

尝试构建一个服务是否能正常运行,从k8s官网看看能不能扒一个现成的yaml测试

尝试创建DEMO

尝试使用 kubectl exec进入容器

总结

相比多年前的印象,现在的k8s可以借助k3s这个青春版快速的启动一个集群,是时候更新下这个错误认知了,现在启动一个k8s测试用是相当简便并且成本很低的。下次尝试原版k8s,成功后尝试kubekey这个类似ansible一样的自动化安装工具

参考

https://docs.k3s.io/architecture

https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-7-1/

资源分配和实际占用统计  https://docs.k3s.io/reference/resource-profiling

自动化安装 https://kubesphere.io/zh/docs/v3.3/installing-on-linux/introduction/kubekey/

ROLES https://blog.csdn.net/Lingoesforstudy/article/details/116484624

https://kubernetes.io/zh-cn/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/

https://blog.csdn.net/qq_44246980/article/details/120143353

0 Comments
Leave a Reply