首页 > Web开发 > 详细

Kubernetes

时间:2019-10-17 12:16:35      阅读:71      评论:0      收藏:0      [点我收藏+]

Kubernetes 是Google开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。K8s是将8个字母ubernete替换为8的缩写。

Kubernetes 属于主从分布式架构,主要由 Master 和 Node 组成,以及包括客户端命令行工具 kubectl 和其它附加项。

  • Master:控制节点,对集群进行调度管理。由 API Server、Scheduler、Cluster State Store 和 Controller-Manger Server 所组成。
  • Node:工作节点,运行应用程序的容器。包含 kubelet、kube proxy 和 Container Runtime。
  • kubectl:通过命令行与 API Server 进行交互,对 Kubernetes 进行操作。

1. 部署应用

在 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 字段可以确认部署是否已经准备就绪。

2. 获取应用的Pod信息

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

3. 对外暴露应用

服务是 Pod 的逻辑集合,使用YAML文件或JSON进行定义。服务通过标签选择器来确定使用哪些 Pod,虽然每个 Pod 都有一个唯一的IP地址,但这些IP地址只在集群内部可用,并不对外暴露。Pod 通过服务对外暴露,服务支持以下四种对外暴露的类型:

  • ClusterIP – 将服务暴露在集群内部的IP,此类型仅支持在集群内访问服务。
  • NodePort – 将服务暴露在所选定的每一个Node的同一个端口,集群外通过<NodeIP>:<NodePort>方式访问服务。
  • LoadBalancer – 在当前的集群中创建一个外部的负载均衡,并为服务指派一个固定的、外部的IP地址。
  • ExternalName – 使用一个指定的名称来暴露服务,并会返回一个带有名称的CNAME记录。此类型不使用代理,这种类型只在kube-dns v1.7上才支持。

技术分享图片

(1)暴露服务

$ kubectl expose deployments/my-nexus3 --name=nexus3 --type="NodePort" --port=8081

(2)查询服务信息

$ kubectl describe services/nexus3

4. 扩缩容应用

扩缩容通过修改部署的副本来实现。

(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

5. 升级应用

滚动升级通过增量式的升级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

 

Kubernetes

原文:https://www.cnblogs.com/yutb/p/11691065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!