天天看点

Kubernetes - 1 入门介绍

什么是Kubernetes

Kubernetes这个名字起源于希腊语,意思是舵手,由于k到s之间有8个字符又简称k8s。Google在2014年开源了Kubernetes项目,基于容器技术的分布式管理系统,在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

为什么要使用Kubernetes

  1. 轻量:与使用VM虚拟机相比,容器镜像创建的简便性和效率更高。
  2. 敏捷:持续集成和部署,通过快速的升级或回滚,提供可靠且频繁的容器映像构建和部署。
  3. 分离:在构建时创建镜像,不依赖发布环境,将运行环境及基础架构分离。
  4. 一致:开发环境、测试环境、生产环境的运行环境一致性。
  5. 移植:不依赖基础架构,可在不同的平台上快速应用。
  6. 隔离:通过NameSpace实现不同环境中、不同租户的资源隔离。
  7. 解耦:应用程序被分解成较小的独立部分,而不是整体在一台单机上运行。
  8. 伸缩:可将应用基于资源利用率等进行快速的动态伸缩。
  9. 效率:高密度及高效率的资源利用率。

Kubernetes架构

Kubernetes - 1 入门介绍

Kubernetes集群中有2种角色,一个是Master作为集群的管理节点,负责管理集群,提供集群的资源数据访问入口,另外一个是Node用来承载被分配Pod的运行,是Pod运行的宿主机。

Kubernetes Master

apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制

controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等

scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上

etcd 保存了整个集群的状态

Kubernetes Node

kubelet 负责维护容器的生命周期,同时也负责 Volume和 Network 的管理

Container runtime 负责镜像管理以及 Pod 和容器的真正运行时

kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡

除了核心组件之外的其他组件

kube-dns 负责为整个集群提供 DNS 服务

Ingress Controller 为服务提供外网入口

Heapster 提供资源监控

Dashboard 提供 GUI

Federation 提供跨可用区的集群

Fluentd-elasticsearch 提供集群日志采集、存储与查询

Kubernetes资源和对象

Kubernetes把所有内容都抽象为资源,把资源实例化出来后称为对象。

  1. workload: 工作负载相关

    Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ReplicationController

  2. service discover and balance: 服务发现及均衡相关

    Service, Ingress

  3. config and storage: 配置及存储相关

    ConfigMap, Secret, Volumn, CSI

  4. cluster resouce: 集群级资源

    Namespace, Node, Role, ClusterRole, RoleBinding, ClusterRoleBinding

  5. metadata resource: 元数据级资源

    HPA, PodTemplate, LimitRange