一、为什么要学习Kubernetes

  • Kubernetes比较热门,得到企业开发、运维等领域的青睐和追捧
  • Kubernete在容器编排引擎领域具有压倒性优势,是新兴技术
  • 在云计算占主导地位,市场需求大
  • 技术提升

二、Kubernetes能做什么

  1. KubernetesGoogle开源的一个容器编排引擎,是构建在Docker技术之的上容器集群管理系统,实现容器化应用提供资源调度,服务发现、高可用管理和弹性伸缩等一整套完整机制。
  • 自动化部署
  • 系统自愈
  • 应用实例副本
  • 水平自动扩展
  • 服务发现
  • 负载均衡
  • 自动更新和回滚

三、Kubernetes优点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud);
  • 可扩展: 模块化,插件化,可挂载,可组合;
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

四、Kubernetes组成

1)Kubernetes集群由两大部分组成:

  • 集群的调度节点(控制平面):Master节点
  • 应用程序实际运行的工作节点(数据平面):Node节点

Kubernetes概述 - 图1
Master节点主要由四个部分组成:apiserver、schedule、controller-manager和etcd

  • API Server:负责对外提供RESTful风格的kubernetes API 的服务,它是系统管理指令的统一接口,任何对资源的增删改查都要交给apiserver处理后再交给etcd。
  • Schedule:负责调度Pod到合适的Node上(资源调度)
  • Controller-manager: 每一个资源都对应一个控制器,而control manager就是负责管理这些控制器的
  • Etcd:Etcd是一个高可用的键值存储系统,kubernetes使用它来存储各个资源的状态,从而实现了Restful的API

Node节点主要由二个部分组成:kublet和kube-proxy

  • Kublet:Kublet是Master在每个Node节点上面的agent,是Node节点上面最重要的模块,它负责维护和管理该Node上的所有容器,与API交互
  • Kube-proxy:Kube-proxy实现了Kubernetes中的服务发现和反向代理功能,Kube-proxy使用Etcd的Watch机制监控集群中Service和Endpoint对象数据的动态变化

五、Kubernetes核心概念

  • Namespace

Namespace是对一组资源和对象的抽象集合,不同 Namespace 里的资源是完全隔离的

[root@master01 ~]# kubectl get ns
NAME                     STATUS   AGE
argocd                   Active   19d
default                  Active   19d
devops                   Active   19d
ingress-nginx            Active   19d
kube-node-lease          Active   19d
kube-public              Active   19d
kube-system              Active   19d
kubernetes-dashboard     Active   19d
nfs-client-provisioner   Active   19d
  • Pod

    Pod是Kubernetes 的最小工作单元。每个Pod包含一个或多个容器。Pod 中的容器会作为一个整体被Master调度到一个Node上运行。所有的容器都是在pod中被管理,一个或多个容器放在pod里作为一个管理单元。
    Kubernetes概述 - 图2

  • Controller 控制器

负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。Kubernetes 提供了多种以下 Controller:Replication Controller(副本控制器)、Node Controller、ResourceQuota Controller、Namespace Controller、Endpoint Controller和Service Controller等

  • Deployment、StatefulSet,DaemonSet

Deployment 无状态应用
StatefulSet 有状态应用
DaemonSet 每个node节点

  • Service

Kubernetes分配给Service的固定IP是一个虚拟IP,Kubernetes是通过Kube-proxy组件来实现的虚拟IP路由及转发

  • ConfigMap、Secrets

    存放应用程序配置,这些配置信息应该从应用程序镜像中解耦出来,以保证镜像的可移植性以及配置信息不被泄露,这与secret的设计理念有异曲同工之妙,它们的主要区别在于ConfigMap通常不用于存储敏感信息,而只存储简单的文本信息