kubernetes是什么

概念

管理容器化的工作负载和服务

特点

声明式和自动化

部署演进

物理机部署:资源边界问题
虚拟化部署:虚拟机资源消耗问题
容器化部署:轻量级

kubernetes组件

image.png
组件分为2类:控制平面组件(Control Plane Components)和节点组(None)

控制平面组件

作用

决策层、对集群做出全局决策

kube-apiserver

用于公开kubernetes的API。能够水平伸缩(部署多个kube-apiserver实例来平衡流量)

etcd

键值数据库

kuben-scheduler

监视(新创建的Pod)并调度(选择节点)

kube-controller-manager

各个控制器(将xx的当前状态向期望的方向转变)的集合

Node组件

kubelet

每个节点一个,确保Pod中的容器运行且健康

kube-proxy

网络代理,实现Pod的网络通信

container runtime(容器运行时)

负责运行容器的软件

Kubernetes API

API Server (kube-apiserver)是kubernetes控制面的核心。
image.png
使用API可以操作集群内部资源。
kubectl也是基于调用API实现的。

使用kubernetes对象

理解 Kubernetes 对象

image.png
对象会被存储至etcd数据库。
对象的所有操作(增删改查)都需要通过Kubernetes API。程序中可以借助 [Client Libraries](https://kubernetes.io/docs/reference/using-api/client-libraries/)实现调用Kubernetes API

以使用kubectl创建一个kubernetes对象为例
image.png

Kubernetes 对象管理

基于kubectl 的管理
指令、指令+文件、指令+文件夹

对象名称和 IDs

名称必须在同类资源中唯一
UID全局唯一

名字空间

用于隔离一组资源
命名空间+资源配额可以为多用户划分集群
并不是所有对象都在命名空间中(如Node、命名空间本身)

  1. # 位于名字空间中的资源
  2. kubectl api-resources --namespaced=true
  3. # 不在名字空间中的资源
  4. kubectl api-resources --namespaced=false

命名空间和DNS
image.png

标签和选择算符

标签支持高效的查询和监听
可以用=进行筛选,多条件使用,分隔
在API调用中也可以使用标签

  • 基于kubectl时使用-l标签
  • 基于url调用

注解

Finalizers

字段选择器

属主与附属

推荐使用的标签

references