K8S中部分概念解析

K8S中部分概念解析

1、k8s

k8s全称kubernetes,是能操作部署多个容器的工具。

从架构设计层面,我们关注的可用性,伸缩性都可以结合k8s得到很好的解决。

  1. 服务发现与调度
  2. 负载均衡
  3. 服务自愈
  4. 服务弹性扩容
  5. 横向扩容
  6. 存储卷挂载

K8s pod 是K8s管理容器集的最小单位。 每个pod有一个分配给pod中的所有容器的单独的IP 地址。

在pod中的容器内存和存储资源是共享的。当应用程序只有一个进程时,pod 也可以有一个容器。
另外可以区分下Kubectl和K8s,Kubectl是K8s的命令行工具。它用于部署应用程序、监控和控制集群资源以及查看日志。从用户的角度来看,Kubectl 是你的K8s的控制面板。它使你能够执行所有K8s操作。从技术角度来看,Kubectl 是K8s API的客户端。

K8S架构如下所示:
K8S中部分概念解析_第1张图片

2、Container

容器化技术无需虚拟出整个操作系统,只需要虚拟一个小规模的环境即可,而且启动速度很快,除了运行其中的应用外,基本不消耗额外的系统资源。

Docker是应用最为广泛的容器技术,通过打包镜像,启动容器来创建服务。但是随着应用越来越复杂,容器的数量也越来越多,由此衍生了管理运维容器的重大问题。至此k8s问世,提出了一套全新的基于容器技术的分布式架构领先方案,在整个容器技术领域的发展是一个重大突破与创新。

3、Node

k8s集群由Master节点和Worker节点组成。

(1) master

Master节点指的是集群控制节点,管理和控制整个集群,基本上k8s的所有控制命令都发给它,它负责具体的执行过程。可以在master中使用命令 kubectl get nodes查看集群中所有节点,在Master上主要运行着:

(2) worker

master以外的节点为Worker节点。每个Node都会被Master分配一些工作负载(Docker容器),当某个节点宕机时,该节点上的工作负载就会被Master自动转移到其它节点上。在Node上主要运行着:

4、Deployment

Deployment是一种controller,可用来管理pod,并为pod扩容。

  • 创建ReplicaSet和Pod
  • 滚动升级(不停止旧服务的状态下升级)和回滚应用(将应用回滚到之前的版本)
  • 平滑地扩容和缩容
  • 暂停和继续Deployment

5、Pod

pod 是 kubernetes 中最小的编排单位,通常由一个容器组成 (有时候会由多个容器组成)。

Pod是短暂的,且每个Pod都有一个唯一的IP地址,称之为Pod IP,Pod IP是动态变化的,会随着pod的删除和重建而发生改变。在K8S集群中,一个Pod里的容器与另外主机上的Pod容器能够直接通信

6、Service

service可以做服务发现,即向pod的podID做请求服务,提供了一个统一的服务访问的入口。

7、Configmap

ConfigMap是k8s的一个配置管理组件,可以将配置以key-value的形式传递,通常用来保存不需要加密的配置信息,加密信息则需用到Secret

使用k8s部署应用,将应用配置写进代码中时,会存在更新配置时也需要打包镜像的问题,ConfigMap可以将配置信息和docker镜像解耦。
使用微服务架构,存在多个服务共用配置的情况,使用ConfigMap可以实现多个服务共享配置。

8、Ingress

Ingress用于实现用域名的方式访问k8s内部应用,是对集群中服务的外部访问进行管理的API对象。

Ingress用于从集群外部到集群内部Service的HTTP和HTTPS路由,流量从Internet到Ingress再到Services最后到Pod上,通常情况下,Ingress部署在所有的Node节点上。

Ingress可以配置提供服务外部访问的URL、负载均衡、终止SSL,并提供基于域名的虚拟主机。但Ingress不会暴露任意端口或协议。

9、Endpoints

Endpoint是k8s集群中的一个资源对象,存储在etcd中,用来记录一个service对应的所有pod的访问地址。

可以通过Endpoint实现外部服务与内部服务建立连接。

Node上的Kube-proxy获取每个Service的Endpoints,实现Service的负载均衡功能。service配置selector,endpoint controller才会自动创建对应的endpoint对象;否则,不会生成endpoint对象。

如果检测到Service被删除,则删除和该Service同名的Endpoints对象;

如果检测到新的Service被创建或修改,则根据该Service信息获得相关Pod列表,然后创建或更新Service对应的Endpoints对象。

你可能感兴趣的:(Linux,kubernetes,docker,容器)