什么是Kubernetes

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

为什么要使用Kubernetes

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

Kubernetes架构

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
Kubernetes中提供了一系列的工作负载类型的控制器用于运行应用,不同类型的控制器应用与不同的场景。

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐