kubernetes官网:https://kubernetes.io/docs/home/
也是怀着不情愿的心情,要开始kubernetes了,本身是非常热爱技术,尤其是容器技术,可能是最近有点累和懈怠,变得有些懒惰了。
每每这种情况,我都会去智联招聘搜一下docker。。。。薪资很高,看了具体的招聘要求,差距很大很大,感觉好累啊。只能说学海无涯,回头可能是岸。。。。话不多说了。开始吧
跑起来~~~
https://kubernetes.io/docs/tutorials/kubernetes-basics/
左面是教程菜单。
我们先来创建一个kubernetes集群,感受一下:
显示以下操作界面:
很热情的开始界面
左边是操作说明,右边是terminal,命令终端口
根据操作说明,我们在terminal中执行minikube start,然后执行kubectl get nodes,这样就创建好了一个单节点的kubernetes集群
集群的唯一节点为host01,需要注意的是当前执行命令的地方并不是host01.我们是在通过kubernetes的命令行工具远程管理集群
heapster,kubernetes-dashboard都是集群中运行的服务
集群就这么创建好了
kubernetes核心功能
部署应用:
kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080
注:显示的有点不正常
这里的deployment是kubernetes的一个术语,可以理解为应用。
kubernetes还有一个重要的术语:Pod
pod是容器的集合,通常会将紧密相关的一组容器放到一个POd中,同一个Pod中的所有容器共享IP地址和port空间,也就是说他们在一个newwork namespace中
Pod是kubernetes调度的最小单位,同一Pod中的容器始终被一起调度。
运行kubectl get pods
kubernetes-bootcamp-390780338-rsrzj 就是应用的pod
访问应用:
默认情况下,所有pod只能在集群内部访问。对于上面这个例子,要访问应用只能直接访问容器的8080端口。为了能从外部访问应用,我们需要将容器的8080端口映射到节点的端口。
执行如下命令:
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
执行kubectl get services可以查看应用被映射到那个端口
这里有两个service
kubernetes是默认的service,暂时不考虑
kubernetes-bootcamp是我们应用的service,8080端口已经映射到host01的31068端口,端口号是随机分配的,可以执行如下命令访问应用:
curl host01:31068
Scale应用:
默认情况下只运行一个副本,可以通过kubectl get deployments
执行以下命令将副本数增加到3个:
kubectl scale deployments/kubernetes-bootcamp --replicas=3
通过curl访问应用:
可以看到每次请求发送到不同的pod,三个副本轮询处理,这样就实现了负载均衡
要scale down也很方便,执行命令:
滚动更新:
当前应用使用的image版本为v1,执行如下命令将其升级到v2:
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
如果要退回v1版本也很容易,执行kubectl rollout undo
验证版本已经回退到v1