前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生|一个在线的K8s免费练习平台

云原生|一个在线的K8s免费练习平台

作者头像
琉璃康康
发布2024-01-22 15:06:31
5340
发布2024-01-22 15:06:31
举报
文章被收录于专栏:七禾页话七禾页话

@七禾页话

学习永无止境,记录相伴相随! —— 琉璃康康

技术的学习唯手熟尔,必须要在理论的基础上实际操作,才能加深印象,之前分享了使用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的过程,一共三部曲,其中必做的是头两步:

  1. 初始化K8s的Master节点;
  2. 初始化K8s的网络;

初始化K8s的Master节点命令如下:

代码语言:javascript
复制
#### 左右滑动,不需要任何修改
kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16

Master节点启动过程如下:

需要注意的在上图中已经标注,此时Node的状态是NotReady,而且coreDNS的POD也是pending的状态,原因是没有网络插件,所以需要运行第二步:初始化K8s的网络,命令如下:

代码语言:javascript
复制
#### 左右滑动,不需要任何修改
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下边的例子:

代码语言:javascript
复制
#### 左右滑动
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:

代码语言:javascript
复制
###左右滑动
kubectl label nodes <node name> kubernetes.io/role=worker

或者for循环
for i in `kubectl 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的基础功能是否好用:

代码语言:javascript
复制
####左右滑动
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml

结果如下:

查看service之后可以使用curl cluster-ip来确认nginx的业务是否好用,如果看到如下的Thank you for using nginx代表nginx业务是正常的:

以上就是使用Play with Kubernetes的过程,总体使用下来除了复制粘贴比较麻烦,偶尔会有卡顿,整体使用下来还是很好的,对于初次接触K8s或者做一些简单验证学习是很好的一个环境,当然一次性4个小时,如果想要验证的没有做完,那就要重来了,需要数秒刷副本!

以上,欢迎留言来一起了解学习ICT的相关知识!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七禾页话 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Play with Kubernetes 介绍
    • 优点
      • 缺点
      • 如何复制粘贴
        • MAC电脑
          • Windows电脑
          • 如何使用Play with Kubernetes
            • 创建Instance
              • 初始化集群的Master节点
                • 注册Worker到Master
                  • 实例化一个Nginx
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档