Kubernetes基本概念和术语
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes基本概念和术语相关的知识,希望对你有一定的参考价值。
1.MasterKubernetes里的Master指的是集群控制节点,每个k8s集群需要一个master来负责整个集群的管理和控制,基本上k8s所有控制命令都发给它,它来负责具体的执行过程(高可用建议部署3台服务器)
Master 节点运行的组件:
Kube-apiserver:提供http Rest接口的关键服务进程,是k8s里所有资源增删改查等操作的唯一入口,也是集群控制的入口进程。
Kube-controller-manager:k8s里所有资源对象的自动化控制中心,可以理解为资源对象的“大总管”。
Kube-scheduler:负责资源调度(pod调度)的进程,相当于公司的调度室。
另外,在master节点上还需要启动一个etcd服务,用于存储所有资源对象的数据。
2.Node
除了master,k8s集群中的其他机器被称为Node节点,它可以是一台物理机,也可以是一台虚拟机,是集群中的负载节点,master会根据自动算法或者自定义的策略将pod调度到指定的node上工作,当node宕机时,其上的工作负载会被master自动转移到其他节点。
每个node节点上运行的进程:
Kubelet:负责pod对应的容器的创建,启停等任务,与master关系密切,实现集群管理的基本功能。
Kube-proxy:实现kubernetes service的通信与负载均衡的组件。
Docker engine:docker 引擎,负责本机的容器创建与管理。
前文k8s集群已介绍如何搭建一套集群。这里不多说。
· [[email protected] ~]# kubectl get nodes
· NAME STATUS ROLES AGE VERSION
· api-server Ready master 7d20h v1.14.1
· node1 Ready <none> 7d19h v1.14.1
· node2 Ready <none> 7d17h v1.14.1
· node3 Ready <none> 4d16h v1.14.2
这里可以看到集群有3个node 1个master.
#kubectl get nodes用于查看集群的node信息。
#kubectl describe node $node_name可以查看更详细的node信息。比如每个pod的CPU的使用率,内存的使用率,node的内核版本,ip信息等以及发生的event都可以查看到。
3.Pod
Pod组成示意图
Pod是k8s的最重要也是最基本的概念,如图所示,每个pod都有一个特殊的被“根容器”的Pause容器。Pause容器对应的镜像属于k8s平台的一部分,以他的状态代表整个容器组的状态。Docker业务容器运行于pod中。
Kubernetes为每个Pod都分配了唯一的IP地址,称为pod IP,一个pod里的多个容器共享Pod IP。kubernetes要求底层网络支持集群内任意两个pod之间的tcp/ip直接通信,通常使用虚拟二层网络技术实现。
4.Label
Label是k8s系统中另一个重要的核心概念,label可以附加到各种对象资源上,例如可以给node打label,给pod打label,一个对象可以添加多个label,例如可以给node增加labe role: preonline 这样就代表着这是个预上线的节点,通过不通label对不同资源进行区分,方便批量更新与回滚。
5.Replication Controller
RC简单来说,定义了一个期望值,即声明了某种pod的副本数量在某时某刻都符合设定的值,如果实际pod的数量少于RC定义的预期的数量,则会自动新增一个pod来符合设定的预期。如配置文件:
apiVersion: v1
kind: ReplicationController
metadata:
name : frontend
spec :
replicas: 1
selector:
tier : frontend
template:
metadata:
labels:
app: app-demo
tie.r: frontend
spec:
containers:
- name: tomcat-demo
image: tomcat
imagePullPolicy: IfNotPresent
env :
- name : GET HOSTS FROM
value: dns
ports:
- containerPort: 80
这里创建了个RC,命名为frontend ,预期存活含有tier:frontend的pod为1个(replicas=1),当预期少于1个时(例如发生node重启,关机等意外),将从template字段生成一个pod,生成后这个pod打上tier: frontend的标签。此时pod数量从0变为1,符合replicas=1的预期.当然此文件还声明了这个pod启用了tomcat的容器(container.image=tomcat)并暴露出80端口(ports.containerPort=80)。
6.Deployment
Deployment 其实是RC的一个升级,增加了例如升级 回滚镜像的功能,如有批量更新镜像版本,则可以使用kubectl set image deployment/$deployment_name $imager_name=$image_version 实例:kubectl set image deployment/nginx-deploy nginx=nginx:1.9.1,说明将升级nginx镜像到1.9.1版本。
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
-name: nginx
image: nginx:1.7.9
ports:
-containerPort: 80
睿江云官网链接:https://www.eflycloud.com/home?from=RJ0024
以上是关于Kubernetes基本概念和术语的主要内容,如果未能解决你的问题,请参考以下文章
k8s 读书笔记 - kubernetes 基本概念和术语(上)