kubernetes官网:https://kubernetes.io/docs/home/

也是怀着不情愿的心情,要开始kubernetes了,本身是非常热爱技术,尤其是容器技术,可能是最近有点累和懈怠,变得有些懒惰了。

每每这种情况,我都会去智联招聘搜一下docker。。。。薪资很高,看了具体的招聘要求,差距很大很大,感觉好累啊。只能说学海无涯,回头可能是岸。。。。话不多说了。开始吧

跑起来~~~

https://kubernetes.io/docs/tutorials/kubernetes-basics/

centos7下kubernetes(1。kubernetes---start)-LMLPHP

左面是教程菜单。

我们先来创建一个kubernetes集群,感受一下:

centos7下kubernetes(1。kubernetes---start)-LMLPHP

显示以下操作界面:

centos7下kubernetes(1。kubernetes---start)-LMLPHP

很热情的开始界面

centos7下kubernetes(1。kubernetes---start)-LMLPHP

左边是操作说明,右边是terminal,命令终端口

centos7下kubernetes(1。kubernetes---start)-LMLPHP

根据操作说明,我们在terminal中执行minikube start,然后执行kubectl get nodes,这样就创建好了一个单节点的kubernetes集群

集群的唯一节点为host01,需要注意的是当前执行命令的地方并不是host01.我们是在通过kubernetes的命令行工具远程管理集群

centos7下kubernetes(1。kubernetes---start)-LMLPHP

heapster,kubernetes-dashboard都是集群中运行的服务

集群就这么创建好了

kubernetes核心功能

部署应用:

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

centos7下kubernetes(1。kubernetes---start)-LMLPHP注:显示的有点不正常

这里的deployment是kubernetes的一个术语,可以理解为应用。

kubernetes还有一个重要的术语:Pod

pod是容器的集合,通常会将紧密相关的一组容器放到一个POd中,同一个Pod中的所有容器共享IP地址和port空间,也就是说他们在一个newwork namespace中

Pod是kubernetes调度的最小单位,同一Pod中的容器始终被一起调度。

运行kubectl get pods

centos7下kubernetes(1。kubernetes---start)-LMLPHP

kubernetes-bootcamp-390780338-rsrzj   就是应用的pod

访问应用:

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

执行如下命令:

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

centos7下kubernetes(1。kubernetes---start)-LMLPHP

执行kubectl get services可以查看应用被映射到那个端口

centos7下kubernetes(1。kubernetes---start)-LMLPHP

这里有两个service

kubernetes是默认的service,暂时不考虑

kubernetes-bootcamp是我们应用的service,8080端口已经映射到host01的31068端口,端口号是随机分配的,可以执行如下命令访问应用:

curl host01:31068

centos7下kubernetes(1。kubernetes---start)-LMLPHP

Scale应用:

默认情况下只运行一个副本,可以通过kubectl get deployments

centos7下kubernetes(1。kubernetes---start)-LMLPHP

执行以下命令将副本数增加到3个:

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

centos7下kubernetes(1。kubernetes---start)-LMLPHP

centos7下kubernetes(1。kubernetes---start)-LMLPHP

通过curl访问应用:

centos7下kubernetes(1。kubernetes---start)-LMLPHP

可以看到每次请求发送到不同的pod,三个副本轮询处理,这样就实现了负载均衡

要scale down也很方便,执行命令:

centos7下kubernetes(1。kubernetes---start)-LMLPHP

centos7下kubernetes(1。kubernetes---start)-LMLPHP

滚动更新:

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

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

centos7下kubernetes(1。kubernetes---start)-LMLPHP

centos7下kubernetes(1。kubernetes---start)-LMLPHP

如果要退回v1版本也很容易,执行kubectl rollout undo

centos7下kubernetes(1。kubernetes---start)-LMLPHP

centos7下kubernetes(1。kubernetes---start)-LMLPHP

验证版本已经回退到v1

05-08 15:12