Kubernetes 是Google开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。K8s是将8个字母ubernete替换为8的缩写。
Kubernetes 属于主从分布式架构,主要由 Master 和 Node 组成,以及包括客户端命令行工具 kubectl 和其它附加项。
在 Kubernetes 集群中,底层的计算能力由各个节点提供,这些节点可以是物理机、虚拟机或云主机。节点分为两类,即 Master 和 Node。
通过 Kubectl 命令行使用 Kubernetes API 和集群进行交互,创建和管理部署。
(1)创建部署
使用 sonatype/nexues3:3.9.0 镜像创建一个名称为 my-nexus3 的部署。
$ kubectl create deployment my-nexus3 --image=sonatype/nexus3:3.9.0
(2)查看集群中的部署
$ kubectl get deployments
通过 AVAILABLE 字段可以确认部署是否已经准备就绪。
Kubernetes 的调度单位是 Pod,每个 Pod 表示一个应用实例,包含一个或多个容器。每个 Pod 都有在集群中唯一的IP地址。Pod 可部署在集群的任意节点中,存储设备可以通过 volume 提供给容器使用。容器通过 Pod 进行组织管理,在一个 Pod 中可以管理多个容器和 volume。
(1)查看集群中的pod
$ kubectl get pods
(2)获取Pod的详细信息
$ kubectl describe pods/my-nexus3-57c474fcfd-8nfx4
(3)获取容器的日志信息
$ kubectl logs my-nexus3-57c474fcfd-8nfx4
服务是 Pod 的逻辑集合,使用YAML文件或JSON进行定义。服务通过标签选择器来确定使用哪些 Pod,虽然每个 Pod 都有一个唯一的IP地址,但这些IP地址只在集群内部可用,并不对外暴露。Pod 通过服务对外暴露,服务支持以下四种对外暴露的类型:
(1)暴露服务
$ kubectl expose deployments/my-nexus3 --name=nexus3 --type="NodePort" --port=8081
(2)查询服务信息
$ kubectl describe services/nexus3
扩缩容通过修改部署的副本来实现。
(1)应用扩容
$ kubectl scale deployments my-nexus3 --replicas=4
(2)查看扩容后的Pod
$ kubectl get pods -o wide
(3)将扩容后的Pod通过服务对外暴露
$ kubectl expose deployments/my-nexus3 --name=nexus-lb --type="NodePort" --port=8081
(4)查看暴露的nodeport
$ kubectl get services/nexus-lb
滚动升级通过增量式的升级Pod实例,在不影响用户体验的情况下,对应用进行升级。
(1)更新镜像版本
$ kubectl set image deployments/my-nexus3 *=sonatype/nexus3:latest
(2)回滚版本
$ kubectl rollout undo deployments/my-nexus3
(3)查看回滚状态
$ kubectl rollout status deployments/my-nexus3
原文:https://www.cnblogs.com/yutb/p/11691065.html