K8S基本概念

Posted 伍妖捌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S基本概念相关的知识,希望对你有一定的参考价值。

简介

Kubernetes简称k8s。用于自动部署,扩展和管理容器化应用程序的开源系统。

功能

服务发现和负载均衡

Kubernetes可以使用DNS名称或自己的IP地址公开容器,如果到容器的流量很大,Kubernetes可以负载均衡并分配网络流量,从而使部署稳定。

存储编排

Kubernetes允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等。

自动部署和回滚

您可以使用Kubernetes描述已部署容器得所需状态,它可以以受控得速率将实际状态更改为所需状态。例如,您可以自动化Kubernetes来为您得部署创建新容器,删除现有容器并将它们得所有资源用于新容器。

自动二进制打包

Kubernetes允许您指定每个容器所需CPU和内存(RAM)。当容器指定了资源请求时,Kubernetes可以做出更好的决策来管理容器的资源。

自我修复

Kubernetes重新启动失败的容器、替换容器、杀死不响应用户定义的运行状态检查的容器,并且在准备好服务之前不将其通告给客户端。

密钥与配置管理

Kubernetes允许您存储和管理敏感信息,例如密码、OAuth令牌和ssh密钥。您可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

整体架构

主从方式

一个主结点+N个从结点
在这里插入图片描述
在这里插入图片描述

Kubernetes Master

在这里插入图片描述

kube-apiserver

  • 对外暴露K8S的api接口,是外界进行资源操作的唯一入口
  • 提供认证、授权、访问控制、api注册和发现等机制

etcd

  • etcd是兼具一致性和高可用性的键值数据库,可以作为保存Kubernetes所有集群数据的后台数据库。
  • Kubernetes集群的etcd数据通常需要有个备份计划

kube-scheduler

主节点上的组件,该组件监视那些新创建的未指定运行节点的Pod,并选择节点让Pod在上面运行。
所有对K8S的集群操作,都必须经过主节点进行调度。

kube-controller-manager

  • 在主节点上运行控制器的组件
  • 这些控制器包括:
    1.节点控制器:负责在节点出现故障时进行通知和响应。
    2.副本控制器:负责为系统中的每个副本控制器对象维护正确数量的Pod。
    3.端点控制器:填充端点对象(即加入Service与Pod)
    4.服务账户和令牌控制器:为新的命名空间创建默认账户和API访问令牌。

Kubernetes Node

在这里插入图片描述

kubelet

  • 一个在集群中每个节点运行的代理。它保证容器都运行在Pod中。
  • 负责维护容器的生命周期、同时也负责Volume(CSI)和网络(CNI)的管理。

kube-proxy

+负责为Service提供cluster内部的服务发现和负载均衡。

容器运行环境(Container Runtime)

  • 容器运行环境是负责运行容器的软件。
  • Kubernetes支持多个容器运行环境Dockers、Container、cri-o、rktlet以及任何实现Kubernetes CRI(容器运行环境接口)。

fluentd

是一个守护进程,它有助于提供集群层面日志。

整体架构

在这里插入图片描述

Container

容器,可以是docker启动的一个容器

Pod

  • k8s使用Pod来组织一组容器
  • 一个Pod中的所有容器共享同一个网络
  • Pod是k8s中最小部署单元

Volume

  • 声明在Pod容器中可以访问的文件目录
  • 可以被挂载在Pod中一个或多个容器指定路径下
  • 支持多种后端存储对象(本地存储、分布式存储、云存储…)

Controllers

更高层次对象,部署和管理Pod

  • ReplicaSet: 确保预期的Pod副本数量
  • Deplotment:无状态应用部署
  • StatefulSet:有状态应用部署
  • DaeemonSet:确保所有Node都运行一个指定Pod
  • Job:一次性任务
  • Cronjob:定时任务

Deployment

  • 定义一组Pod的副本数目、版本等
  • 通过控制器(Controller)维持Pod数目
  • 通过控制器以指定的策略控制版本(滚动升级、回滚等)

Service

  • 定义一组Pod的访问策略
  • Pod的负载均衡,提供一个或多个Pod的稳定访问地址
  • 支持多种方式(ClusterIP、NodePort、LoadBalance)

Label:标签,用于对象资源的查询、筛选

Namespace: 命名空间

  • 一个集群内部的逻辑隔离机制(鉴权、资源)
  • 每个资源都属于一个namespace
  • 同一个namespace所有的资源名不能重复
  • 不同的namespace资源名可以同名

流程

在这里插入图片描述

API

1.通过API来操作整个集群
2.通过kubectl、ui、curl最终发送http+json/yaml方式的请求给API Server,然后控制k8s集群。
在这里插入图片描述

以上是关于K8S基本概念的主要内容,如果未能解决你的问题,请参考以下文章

k8s基本概念-如何使用Services

K8s基本概念入门

k8s基本概念-如何使用私有regsitry

ASP.NET Core on K8S学习初探K8S基本概念快速一览

k8s基本概念-如何使用Deployments

k8s架构基本概念