@七禾页话
学习永无止境,记录相伴相随! —— 琉璃康康
技术的学习唯手熟尔,必须要在理论的基础上实际操作,才能加深印象,之前分享了使用VMWare创建VM的方式安装K3s来做实验,最近发现了一个在线的k8s练习平台叫做Play with Kubernetes,是对于环境受限或者资源受限还想做K8s实验的福音。
Play with Kubernetes 介绍
Play with Kubernetes是Docker通过使用Docker-in-Docker(DinD)技术模拟了多个虚拟机的效果,从而提供了一个在浏览器中免费使用CentOS Linux虚拟机的接口和体验平台,Play with Kubernetes有如下几个优缺点:
优点
- 免费体验:每次登录后都有4个小时的体验时间,可以做想做的实验;
- K8s环境使用kubeadm直接部署(使用 weave 网络);
- 平台共提供了5台Centos7设备供我们使用(docker版本为24.0.2),也就是可以创建5个虚拟node;
- K8s也是比较新的版本1.27.2版本;
- 直接联网,需要apply的yaml或者下载的镜像是直接从官网下载的,而且是外网。
缺点
- 只能使用github或者docker账户做oauth验证,所以要首先拥有docker或者github账户;
- 每次4小时的Session过期后,再登录之后又要从0开始搭建k8s;
- 因为是浏览器中使用,所有交互不是很好,比如Windows下的复制粘贴不是正常的Ctrl+C和Ctrl+V了(后边会介绍如何复制粘贴);
- 最多只能创建5个虚拟机,也就是只能搭建一个master+4 worker的5node的集群,当然对于体验来说也够用了。
总体来说,Play with Kubernetes是一个很好的免费体验平台,对于日常学习、理解和实践基础概念是完全够用了。
下边介绍下如何使用。
如何复制粘贴
工欲善其事必先利其器,之前说了使用过程中不能用正常的Ctrl+C和Ctrl+V来复制粘贴了,所以先介绍下如何复制粘贴。
@七禾页话
MAC电脑
登录后,如果是Mac电脑,Setting中可以看到会自动识别出来,如果没有识别出来,可以选中“Mac OSX”,复制粘贴键如下:
- 复制:Command键+C
- 粘贴:Command键+V
Windows电脑
如果不是Mac电脑,是Windows系统,那么登录后,Setting中识别的是None,这个时候的复制粘贴如下:
带Fn键的,需要开启Fn功能,也就是Fn键上的小灯是亮的:
- Ctrl键+Fn键+Insert键(F10键)
- Shift键+Fn键+Insert键(F10键)
Fn功能的开启先按fn然后迅速按左侧shift键,即可开启fn(功能)模式:
@七禾页话
如果不带Fn键的:
- Ctrl键+Insert键
- Shift键+Insert键
如何使用Play with Kubernetes
接下来就是正文如何使用Play with Kubernetes了。
打开网站https://labs.play-with-k8s.com/,选择使用Github
或者Docker
后跳转进行Oauth验证登录。
@七禾页话
创建Instance
登录后首先要Add New Instance
来创建Node,可以根据自己的需要创建多个node,最多5个:
@七禾页话
@七禾页话
初始化集群的Master节点
创建完Node后,可以看到Warning提示初始化Master的过程,一共三部曲,其中必做的是头两步:
- 初始化K8s的Master节点;
- 初始化K8s的网络;
初始化K8s的Master节点命令如下:
#### 左右滑动,不需要任何修改
kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16
Master节点启动过程如下:
需要注意的在上图中已经标注,此时Node的状态是NotReady,而且coreDNS的POD也是pending的状态,原因是没有网络插件,所以需要运行第二步:初始化K8s的网络,命令如下:
#### 左右滑动,不需要任何修改
kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
安装结果如下,安装网络插件后,等一会儿Node就会Ready,所有的POD也都会Ready:
注册Worker到Master
如果已经创建了其他的node,直接在master以外的node上运行如下的命令,此命令是安装K8s master节点log中的join
命令,其中token每次都会变,所以不要直接copy下边的例子:
#### 左右滑动
kubeadm join 192.168.0.18:6443 --token 1g5gfn.agqd0wf4cbv2hbyf \
--discovery-token-ca-cert-hash sha256:eac1d72af79f6b3da5e69ee44cd1e3f46c3de52f90f4ef448655daefadf5669d
过程如下:
然后回到Master节点运行kubectl get node
可以看到node2已经加入到集群了:
但是会看到worker的role是none,为了很清晰明了的知道各个node的角色,可以打label:
###左右滑动 kubectl label nodes <node name> kubernetes.io/role=worker
或者for循环
for i inkubectl get nodes -o wide --no-headers | grep -iv "control-plane" | awk '{print $1}'
;do kubectl label nodes $i kubernetes.io/role=worker;done
效果如下:
可以继续将第二个worker节点加入到集群中,到此一个Master加两个Worker的小K8s集群创建完成了。
@七禾页话
实例化一个Nginx
Ngnix作为云原生界的hello world
常常被用来验证集群是否好用,所以我们也继续用Ngnix来验证Cluster的基础功能是否好用:
结果如下:
查看service之后可以使用curl cluster-ip
来确认nginx的业务是否好用,如果看到如下的Thank you for using nginx
代表nginx业务是正常的:
以上就是使用Play with Kubernetes
的过程,总体使用下来除了复制粘贴比较麻烦,偶尔会有卡顿,整体使用下来还是很好的,对于初次接触K8s或者做一些简单验证学习是很好的一个环境,当然一次性4个小时,如果想要验证的没有做完,那就要重来了,需要数秒刷副本!
以上,欢迎留言来一起了解学习ICT的相关知识!