Kubernetes官网为我们准备了最小可用系统,我们可以借此来快速了解Kubernetes。
访问地址如下:
https://kubernetes.io/docs/tutorials/kubernetes-basics/
界面展示:
教程菜单位于界面的左端,Terminal位于界面的右侧,我们可以在此处体验Kubernetes的集群创建、应用部署、访问应用、扩展应用、更新应用等最常见的使用场景,
便于我们快速建立对Kubernetes的感性认识。
下面开始我们Kubernetes的快速体验:
1、创建一个单节点Kubernetes集群
执行 minikube start,这样一个单节点的Kubernetes集群就创建成功了,我们可以执行kubectl get nodes命令来查看集群节点。
这里需要注意的一点是我们执行的这些命令并不是在对应的节点中,而是通过Kubernetes命令行工具kubectl来远程管理集群。
查看集群信息,执行 kubectl cluster-info
2、部署应用
首先介绍一个术语Pod:Pod是容器的集合,通常会将紧密相关的一组容器放到一个Pod中,同一个Pod中的所有容器共享IP地址和Port空间,
也就是说它们在一个network namespace中。Pod是Kubernetes调度的最小单位,同一Pod中的容器始终被一起调度。
下面正式开始应用部署,执行 kubectl run kubernetes-bootcamp \--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \--port=8080,
我们通过kubectl run部署一个应用,应用名为:kubernetes-bootcamp,Docker镜像通过 --image 指定。--port设置应用对外服务的端口。
查看Pod:
执行 kubectl get pods,查看当前的Pod
3、访问应用
默认情况下,所有Pod只能在集群内部访问。如上面的POD,如果我们想要访问该应用就只能直接访问容器的8080端口。
为了能够从外部访问应用,我们需要将容器的8080端口映射到节点的端口。
执行:kubectl expose deployment/kubernetes-bootcamp \--type="NodePort" \--port 8080
执行 kubectl get services,可以查看应用被映射到节点的哪个端口。
kubernetes-bootcamp是我们应用的service,8080端口已经映射到节点的30335端口,注意端口号是随机分配的。
可以执行命令:curl miniube:30335 访问应用
4、Scale应用
默认情况下应用只会运行一个副本,我们可以通过 kubectl getdeployments 命令查看副本数。
如果我们想要增加副本数量可以执行命令 kubectl scale deployments/kubernetes-bootcamp --replicas=3
通过curl访问应用,可以看到每次请求发送到不同的Pod,3个副本轮询处理,这样就实现了负载均衡。
若想减少副本数量,可以执行 kubectl scale deployments/kubernetes-bootcamp --replicas=2,如图可以看到,其中一个副本被删除了。
5、滚动更新
当前应用使用的image版本为v1,可以执行命令 kubectl set image deployments/kubernetes-bootcampkubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
将其升级到 v2。通过kubectl get pods可以观察滚动更新的过程:v1的Pod被逐个删除,同时启动了新的v2 Pod。更新完成后可以访问新版本应用。
版本回退可以执行 kubectl rollout undo 。
参考书籍:《每天5分钟玩转Kubernetes》