K8s - 免费的Kubernetes在线实验平台介绍2(官网提供的在线系统)
kubernetes(简称 K8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用。 在之前的文章中,我介绍如何通过 Docker 为我们提供的实验网站 Play with Kubernetes(PWK)来搭建 Kubernetes 集群(点击查看)。
(4)在终端中执行如下命令即可开始初始化集群:
(5)可以看到这样就创建好了一个单节点的 kubernetes 集群。
(2)然后执行如下命令可以查看当前的 Pod:
(2)执行 kubectl get services 命令可以看到 8080 端口已经映射到 host01 的 31490 端口(端口号是随机分配的)
(4)当然也可以通过浏览器访问,点击终端上方的加号,在弹出菜单中选择“View HTTP port 30000 on Host 1”
(2)执行如下命令将副本数增加到 3 个:
(3)通过 kubectl get pods 可以看到当前的 Pod 也增加到了 3 个:
(5)要 scale down 也很方便,下面将删除一个副本(副本数变为 2)
(2)通过 kubectl get pods 可以观察滚动更新的过程,可以看到 v1 的 Pod 被逐个删除,同时启动了新的 v2 版本的 Pod。
但如果每次学习时都需要重新搭建一个 K8s 集群还是很麻烦。好在 Kubernetes 官网已经为我们准备好了现成的最小可用系统。我们通过 Web 浏览器就可以直接使用一个预先部署好的 Kubernetes 集群,快速体验 Kubernetes 的功能和应用场景。
1,创建 Kubernetes 集群
(1)首先访问官网的在线教程:
(2)点击页面上的的“Hello Minikube”链接
(3)点击打开页面中的“Launch Terminal”按钮即可打开 Terminal(命令终端窗口)
minikube start
(5)可以看到这样就创建好了一个单节点的 kubernetes 集群。
2,部署应用
(1)我们执行如下命令部署一个名为 kubernetes-bootcamp 的容器:
kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080
(2)然后执行如下命令可以查看当前的 Pod:
Pod 概念介绍:
- Pod 是容器的集合,它是 Kubernetes 调度的最小单位,同一个 Pod 中的容器始终被一起调度。
- 通常我们会将紧密相关的容器放到同一个 Pod 中,同一个 Pod 中的所有容器共享 IP 地址和 Port 空间,也就是说它们在一个 network namespace 中。
kubectl get pods
3,访问应用
(1)默认情况下,所有 Pod 只能在集群内部访问。为了能够从外部访问应用,我们执行如下代码将容器的 8080 端口映射到节点的端口。kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
(2)执行 kubectl get services 命令可以看到 8080 端口已经映射到 host01 的 31490 端口(端口号是随机分配的)
(3)我们可以执行如下命令访问应用:
curl host01:31490
(4)当然也可以通过浏览器访问,点击终端上方的加号,在弹出菜单中选择“View HTTP port 30000 on Host 1”
(5)将弹出页的 url 中端口部分改成 31490 回车,即可看到结果。
4,Scale 应用
(1)默认情况下应用只会运行一个副本,我们可以执行如下命令查看副本数。kubectl get deployments
(2)执行如下命令将副本数增加到 3 个:
kubectl scale deployments/kubernetes-bootcamp --replicas=3
(3)通过 kubectl get pods 可以看到当前的 Pod 也增加到了 3 个:
(4)通过 curl 访问应用,可以看到每次请求发送到不同的 Pod,3 个副本轮训处理,这样就实现了负载均衡。
kubectl scale deployments/kubernetes-bootcamp --replicas=2
5,滚动更新
(1)当前使用的 image 版本是 v1,执行如下命令将其升级到 v2。kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
(2)通过 kubectl get pods 可以观察滚动更新的过程,可以看到 v1 的 Pod 被逐个删除,同时启动了新的 v2 版本的 Pod。
(3)测试下现在确实变成了 v2 版了。
(4)如果想要回退到 v1 版本,执行下面命令进行回滚即可。
kubectl rollout undo deployments/kubernetes-bootcamp