Kubernetes主要由以下几个核心组件组成
主要组件:

  • kube-apiserver : 提供了资源的增、删、改、查等操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • etcd :保存了整个集群的状态;
  • kube-scheduler :负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kube-controller-manager:负责维护集群的状态,资源对象的自动化控制中心,比如故障检测、自动扩展、滚动更新、服务帐户和令牌控制器等;
  • cloud-controller-manager:与底层云提供商交互的控制器;

节点组件:

  • kubelet : 负责Pod对应的容器的 创建、启停等任务,与Master节点密切协作,实现集群管理的基本功能。
  • kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡;
  • Container Runtime :负责镜像管理以及Pod和容器的真正运行(CRI)

插件:

  • kube-dns负责为整个集群提供DNS服务
  • Dashboard提供Web UI
  • 集群资源监测
  • 集群的日志

Kubernetes提供了多种资源对象,用户可以根据自己应用的特性加以选择。这些对象有:

类别类别
资源对象Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet、Job、CronJob、HorizontalPodAutoscaling
配置对象Node、Namespace、Service、Secret、ConfigMap、Ingress、Label、ThirdPartyResource、 ServiceAccount
存储对象Volume、Persistent Volume
策略对象SecurityContext、ResourceQuota、LimitRange

三种IP
Node IP : Node 节点IP地址,Node IP 是Kubernetes集群中每个节点的物理网卡的IP地址
Pod IP : Pod的IP地址 ,是一个虚拟二层网络
Cluster IP: Service的IP地址 ,也是一个虚拟IP,

资源对象

Pod: 是kuberneters 最重要最基本的概念,也是最简的单位。 每个Pod都有一个Pause容器。
Pod类型:普通的Pod 和静态的Pod
Label(标签):核心概念,Label是附着到object上(例如Pod、Node、Service、RC等)的键值对。可以在创建object的时候指定,也可以在object创建后随时指定。Labels的值对系统本身并没有什么含义,只是对用户才有意义。
Replication Controller 和 ReplicaSet :用来确保容器应用的副本数始终保持在用户定义的副本数。ReplicaSet 与Deployment 这两个资源对象逐步替换之前RC的作用。虽然ReplicaSet可以独立使用,但一般还是建议使用 Deployment 来自动管理ReplicaSet,这样就无需担心跟其他机制的不兼容问题;

  • Pod期待的副本数(replicas)
  • 用于帅选目标Pod的Label Selector
  • 当Pod的副本数小于预期数量时,用于创建新Pod的Pod模板(template)

Deployment : 在Pod的管理对象RC、Deployment、DaemonSet和Job都是面向无状态的服务
StatefulSet : 是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计)

  • 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现
  • 稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service)来实现
  • 有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次依次进行(即从0到N-1,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态),基于init containers来实现
  • 有序收缩,有序删除(即从N-1到0)
    DaemonSet : 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
    Job:
    Horizontal Pod Autoscaling (HPA) : 使Pod水平自动缩放。Horizontal Pod Autoscaling仅适用于Deployment和ReplicaSet;

服务发现

Service 是一种抽象的:一个 Pod 的逻辑分组,一种可以访问它们的策略 —— 通常称为微服务。通常是通过 Label Selector实现的(还有没有 selector 的 Service)。
在这里插入图片描述
Kubernetes Service 能够支持 TCP 和 UDP 协议,默认 TCP 协议

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: backend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
      

Namespace :命名空间为Kubernetes集群提供虚拟的隔离作用,Kubernetes集群初始有两个命名空间,分别是默认命名空间default和系统命名空间kube-system,除此以外,管理员可以可以创建新的命名空间满足需要。
Secret 密钥对象 : Secret是用来保存和传递密码、密钥、认证凭证这些敏感信息的对象。
从Kubernetes的系统架构、技术概念和设计理念,我们可以看到Kubernetes系统最核心的两个设计理念:一个是容错性,一个是易扩展性。容错性实际是保证Kubernetes系统稳定性和安全性的基础,易扩展性是保证Kubernetes对变更友好,可以快速迭代增加新功能的基础。

Logo

开源、云原生的融合云平台

更多推荐