K8S基础概念
Node
Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod。在每个Node上运行用于启动和管理Pid的服务Kubelet,并能够被Master管理。在Node上运行的服务进行包括Kubelet、kube-proxy和docker daemon。
Node信息如下:
- Node地址:主机的IP地址,或者Node ID。 Node运行状态:包括Pending、Running、Terminated三种状态。
Node - Condition(条件):描述Running状态Node的运行条件,目前只有一种条件----Ready。Ready表示Node处于健康状态,可以接收从Master发来的创建Pod的指令。
- Node系统容量:描述Node可用的系统资源,包括CPU、内存数量、最大可调度Pod数量等。
- 其他:Node的其他信息,包括实例的内核版本号、Kubernetes版本号、Docker版本号、操作系统名称等。
查看Node信息:
kubectl describe node
Pod
Pod是Kubernetes的最基本操作单元,包含一个或多个紧密相关的容器
一个Pod中的应用容器共享同一组资源,如下所述:
- PID命名空间:Pod中的不同应用程序可以看到其他应用程序的进程ID;
- 网络命名空间:Pod中的多个容器能够访问同一个IP和端口范围;
- IPC命名空间:Pod中的多个容器能够使用SystemV IPC或者POSIX消息队列进行通信;
- UTS命名空间:Pod中的多个容器共享一个主机名;
- Volumes(共享存储卷):Pod中的各个容器可以访问在Pod级别定义的Volumes。
Label
Label以key/value键值对的形式附加到各种对象上,如Pod、Service、RC、Node等。Label定义了这些对象的可识别属性,用来对它们进行管理和选择
Replication Controller
Replication Controller是Kubernetes系统中的核心概念,用于定义Pod副本的数量。在Master内,Controller Manager进程通过RC的定义来完成Pod的创建、监控、启停等操作。
Service
一个Service可以看作一组提供相同服务的Pod的对外访问接口。Service作用于哪些Pod是通过Label Selector来定义的。
Volume
Volume是Pod中能够被多个容器访问的共享目录。
Namespace
Namespace(命名空间)是Kubernetes系统中的另一个非常重要的概念,通过将系统内部的对象“分配”到不同的Namespace中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。
Annotation
Annotation与Label类似,也使用key/value键值对的形式进行定义。Label具有严格的命名规则,它定义的是Kubernetes对象的元数据(Metadata),并且用于Label Selector。Annotation则是用户任意定义的“附加”信息,以便于外部工具进行查找。
用Annotation来记录的信息包括:
- build信息、release信息、Docker镜像信息等,例如时间戳、release id号、PR号、镜像hash值、docker registry地址等;
- 日志库、监控库、分析库等资源库的地址信息;
- 程序调试工具信息,例如工具名称、版本号等;
- 团队的联系信息,例如电话号码、负责人名称、网址等。