[Translation] Hello Kubernetes fast interactive lab manual

Translation: Edison Zhou

  

First, the basic introduction

  This interactive experiment allows you to easily try to manage a simple container of Application Clusters do not build K8S environment, you can learn the following:
  • The deployment of a container application to a cluster
  • Deployment telescopic (Scale)
  • Updated container application to a new version
  • Debug application container
  This interaction is mainly based on experimental virtual terminal (Virutal Terminal), you can run directly in your Web browser Minikube, which can run anywhere K8S is a minimizing of local K8S environment, you do not need to install any software and any configuration.

Second, the experimental content

  1. Creating a cluster
  2. Deploy an application
  3. Access to the current application
  4. Telescopic current application
  5. Scroll update application

Third, the specific steps

Creating a cluster

  Select "Create a Cluster" => "Interactive Tutorial - Creating a Cluster", from here
  
  Where you'll find tips and terminal interface, which is based Minikube of K8S terminal:
  
  K8S to create a single node cluster by performing minikube start in a terminal:
  
  You can view the cluster information by performing kubectl cluster-info:
  

Deploy an application

  Here deploy a sample application, execute the following command:
kubectl run kubernetes-bootcamp \
--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \
--port=8080
  这里kubectl run是老版本的命令,即将被废除,建议使用kubectl create替代。
  
  通过执行kubectl get pods可以看到,当前的kubernetes-bootcamp-7dc9765bf6-dgmz8就是当前应用的Pod。

访问当前应用

  默认情况下,所有Pod只能在集群内部访问,想要从外部访问,就必须映射端口。
kubectl expose deployment/kubernetes-bootcamp \
--type="NodePort"
--port 8080
  可以看到,映射成功:
  
  执行命令 kubectl get services,可以看到应用被映射到了节点的哪个端口:
  
  可以看出,当前应用所处的服务被映射到了32752端口上,这个端口是随机分配的。因为采用NodePort方式的话,是会在30000-32767区间随机取一个端口号。
怎么验证部署的应用是否可以访问?
curl your-cluster-ip:32725
  效果如下图所示:
  

伸缩当前应用

  默认情况下,应用只会运行一个副本,可以通过kubectl get deployments来查看:
  
  那么,如果需要增加副本数,可以通过命令kubectl scale来增加,如下图所示,可以看到现在已经由1个副本增长为了3个副本了:
  
  由于Pod是K8S资源调度的最小单位,因此执行kubectl get pods也可以验证Pod的数量:
  
  这时,可以通过curl再次访问应用,便可以看到这些请求都会发往不同的Pod(也不一定完全是每次都会转发给不同的Pod),因为我们有3个副本会负载均衡:
  
  如果不需要很多的副本来负载均衡,也可以收缩副本数量,比如收缩到2个副本:
kubectl scale deployments/kubernetes-bootcamp --replicas=2
  

滚动更新应用

  当前应用kubernetes-bootcamp所用的image的版本为v1,假设现在有了新版本,可以通过以下命令来将其升级到v2。
kubectl set image deployments/kubernetes-bootcamp \
kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
  从下图可以看到,更新版本之后原先v1的两个Pod便已经在被停止,进而创建了两个新的Pod:
  
  过了几秒之后,再次查看,原先的两个v1的Pod已经被删除:
  
  这时可以通过curl进行验证,可以发现版本号已经升级为了v2:
  
  这时如果发现v2存在某个百年一遇的大Bug(不容易发现那种),想要快速回退到上个版本v1,可以通过以下命令来快速回退:
kubectl rollout undo deployments/kubernetes-bootcamp
  可以看到回退之后,v2的两个Pod就被停止了,进而新创建了两个v1的Pod:
  
  这时如果再进行curl验证,可以发现版本变为了v1了:
  

四、实验小结

   这里通过官网的交互实验教程快速的体验了一把K8S的基本功能使用,全程通过kubectl来调用的K8S API,相信会对完全没接触K8S的童鞋有帮助。

参考资料

   K8S指导手册https://kubernetes.io/docs/tutorials
   每天5分钟玩转K8Shttps://item.jd.com/12329528.html

 

Guess you like

Origin www.cnblogs.com/edisonchou/p/kubernetes_quick_tutorial_chinese_notes.html