第一章:先把Kubernetes跑起来

前言

本篇的目的是想在最短的时间之内搭建一个可用的系统,尽快建立起对K8s的感性认识。先玩起来,快速了解
基本概念、功能和使用场景。
越是门槛高的知识,就越需要一个最小的可用系统。如果直接上来就学习理论知识和概念,很容易从入门到放弃。
Kubernetes 下面咱们都使用简称 k8s。

1.1 创建Kubernetes集群

登录官网https://kubernetes.io/docs/tutorials/kubernetes-basics
点击教程菜单 Create a Cluster → Interactive Tutorial - Creating a Cluster,显示操作界面如下图:
在这里插入图片描述
左边部分是操作说明,右边是Terminal,级命令终端窗口。
按照操作说明,我们再命令窗口中先执行 minikube start,然后执行 kubectl get nodes,这样就创建好了一个单节点的kubernetes集群,如下图所示:
在这里插入图片描述
集群的唯一节点为minikube,需要注意的是当前执行命令的地方并不是minikube。我们是通过Kubernetes的命令行工具kubectl远程管理集群。
执行kubectl cluster-info查看集群信息,如下图:
在这里插入图片描述

1.2 部署应用

执行命令:

kubectl run kubernetes-bootcamp \
	--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \
	--port=8080

这里通过kubectl run部署了一个应用,命名为kubernetes-bootcamp,如下图所示。
在这里插入图片描述
docker镜像通过–image指定。
–port 设置应用对外服务的端口。
这里的Deployment是Kubernetes的术语,可以理解为应用。
Kuberbetes还有一个重要术语Pod。
Pod是容器的集合,通常会将紧密相关的一组容器放到一个Pod中,同一个Pod中的所有容器共享IP地址和Port空间,也就是说它们在一个network namespace中。
Pod是Kubernetes调度的最小单位,同一Pod中的容器始终被一起调度。
运行kubectl get pods,查看当前的Pod,如下图所示:
在这里插入图片描述
kubernetes-bootcamp-dd9784f6-pcf56就是应用的Pod。

1.3 访问应用

默认情况下,所有的Pod只能在集群内部访问。对于上面的这个例子,要访问应用只能直接访问容器的8080端口。为了能够从外部访问应用,我们需要将容器的8080端口映射到节点的端口。
执行如下命令:

kubectl expose deployment/kubernetes-bootcamp \
	--type="NodePort" \
	--port 8080

在这里插入图片描述
执行命令kubectl get services,可以查看应用被映射到节点的哪个端口,如下图:
在这里插入图片描述
这里有两个service,可以将service暂时理解为端口吧映射,后面我们会详细讨论。
Kubernetes是默认的service,暂时不用考虑。kubernetes-bootcamp是我们应用的service,
8080端口已经映射到minikube的31990端口,端口号是随机分配的,可以执行如下命令方位应用:

curl minikube:31990

在这里插入图片描述

1.4 Scale应用

默认情况下应用只会运行一个副本,可以通过kubectl get deployments查看副本数,如下图:
在这里插入图片描述
增加如下命令将副本数增加到3个:

kubectl scale deployments/kubernetes-bootcamp --replicas=3

在这里插入图片描述
通过kubectl get pods 可以查看到当前Pod增加到3个,如下图:
在这里插入图片描述
通过curl访问应用,可以看到每次请求发送到不同的Pod,3个副本轮询处理,这样就实现了负载均衡。如下图:
在这里插入图片描述
要scale down也很方便,执行下列命令:

扫描二维码关注公众号,回复: 10112604 查看本文章
kubectl scale deployments/kubernetes-bootcamp --replicas=2

在这里插入图片描述

1.5 滚动更新

当前应用使用的image版本为v1,执行如下命令将其升级到v2,结果如下:

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

在这里插入图片描述
通过kubectl get pods 可以观察滚动更新的过程:v1的Pod被逐个删除,同时启动了新的v2 Pod。更新完成后访问新版本应用,如下图:
在这里插入图片描述
查看版本信息如下:
在这里插入图片描述
如果要回退到v1版本也很容易,执行 kubectl rollout undo命令,结果如下:

kubectl rollout undo deployments/kubernetes-bootcamp

验证版本已经回退到v1,如下图
在这里插入图片描述

1.6 小结

至此,我们已经通过官网的交互式教程快速体验了Kubernetes的功能和使用方法。接下来的篇章我们会详细讨论Kubernets的架构、典型的部署方法、容器编排能力、网络方案、监控方案,让我们全面掌握Kubernetes的核心技能。

发布了47 篇原创文章 · 获赞 0 · 访问量 1181

猜你喜欢

转载自blog.csdn.net/weixin_43103748/article/details/103761904