介绍一个在线K8S练习平台

2023-12-25 21:33:07

是不是有很多小伙伴想学习k8s,但是又没有机器去练习。使用自己的笔记本电脑或者主机只能搭建单机版本的k8s来练习。

现在福利来了,给大家介绍一个在线多节点k8s练习平台:Play with Kubernetes。

Play with Kubernetes 介绍

  1. Play with Kubernetes 一个提供了在浏览器中使用免费 CentOS Linux 虚拟机的体验平台,其内部实际上是 Docker-in-Docker(DinD)技术模拟了多虚拟机/PC 的效果。
  2. Play with Kubernetes 平台有如下几个特色:
  • 允许我们使用 github 或 dockerhub 账号登录
  • 在登录后会开始倒计时,让我们有 4 小时的时间去实践
  • K8s 环境使用 kubeadm 来部署(使用用 weave 网络)
  • 平台共提供 5 台 centos7 设备供我们使用(docker 版本为 24.0.2)

搭建 Kubernetes 集群

  1. 首先访问网站:https://labs.play-with-k8s.com/,并使用github 或 dockerhub 账号进行登录。
  2. 登录后点击页面上的 Start 按钮,我们便拥有一个自己的实验室环境。


3. 单击左侧的“Add New Instance” 来创建第一个 Kubernetes 集群节点。它会自动将其命名为“node1”,这个将作为我们群集的主节点。


可以看到有三条命令,分别是:初始化master节点、初始化网络、部署nginx pod。
4. node1 执行第一条命令

kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16

执行完毕后,可以看到输出中存在这么一条命令:


这条命令用于后续添加node节点,在node节点中执行。先复制出来,后续使用
5. node1 执行第二条命令
此命令是安装 Pod 网络(这里我们使用 flannel),否则 Pod 之间无法通信。

kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
  1. 点击“Add New Instance” 创建node2,并执行第四步复制出来,执行添加节点的的命令
kubeadm join 192.168.0.13:6443 --token ezgizu.pi14arjxq8pyzstm \
        --discovery-token-ca-cert-hash sha256:83feca790dfbd89d515f28deb4fce1401078cccc95981fdd63895c340697d90e

执行完毕后,切换到node1,执行kubectl get nodes查看已经部署好的节点:

[node1 ~]$ kubectl get nodes
NAME    STATUS   ROLES           AGE     VERSION
node1   Ready    control-plane   4m19s   v1.27.2
node2   Ready    <none>          23s     v1.27.2
  1. 部署nginx,node1执行第三条命令。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml

检查pod 是否运行,执行kubectl get pods -o wide

[node1 ~]$ kubectl get pods -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP         NODE    NOMINATED NODE   READINESS GATES
my-nginx-cbdccf466-c2744   1/1     Running   0          30s   10.5.1.2   node2   <none>           <none>
my-nginx-cbdccf466-sqc2z   1/1     Running   0          30s   10.5.1.3   node2   <none>           <none>
my-nginx-cbdccf466-wl8kq   1/1     Running   0          30s   10.5.1.4   node2   <none>           <none>

检查service,执行kubectl get service:

[node1 ~]$ kubectl get service
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes     ClusterIP      10.96.0.1      <none>        443/TCP        7m3s
my-nginx-svc   LoadBalancer   10.97.165.15   <pending>     80:31661/TCP   78s

此时,可以看到集群内部ip为10.97.165.15,在任意节点中执行 curl 10.97.165.15

可看到有以下输出:

[node2 ~]$ curl 10.97.165.15
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

至此,一个master,一个node节点的k8s就已经搭建好了,并且部署了一个nginx deployment。

后续想要自己部署其他服务,也可以在这上面进行练习。每次都会有四个小时的连接时间。

文章来源:https://blog.csdn.net/efheoihfe/article/details/135209109
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。