1.k8s删除pod流程

删除一个正在跑的pod进程节点,肯定不能直接kill, 需要gracfully teminate优雅停机。

当请求删除pod时,集群会记录并且跟踪优雅停机阶段直到pod可以被允许。Kubelet apiserver 接受到用户的删除指令,默认有30秒时间优雅停机。

此时 在这个timeout期限内,kubelet 会发送TERM(别名 sigterm,杀死进程)信号到容器主线程尝试去停止该容器。container runtime( 容器生命周期管理软件)负责异步地处理这些请求。并不能保证处理顺序,如果有STOPSINGAL定义了在镜像中,k8s就会发送STOPSINGAL而不是TERM.

一旦优雅停机时间结束,那么会直接发送kill signal 给到所有残留的进程,并且从api server删掉该pod.

2.k8s有哪些组件

k8s部署后,你就拥有了一个集群cluster.

一个k8s集群是由一系列实体运作的机器worker machine组成,也叫节点node。这些node就是用来跑容器化的应用的。一个集群至少有一个woker node。而除开这些工作机器,我们常常单拿出一个节点专门负责管理,也就是control plane,有时也被叫做master node.

worker nodes

主要承载了pods的运行。而pods上一般都会运行应用,所以woker nodes节点承担了应用负载application workload。

worker node的组成:

        - kubelet :节点agent,节点的主要组件

        - kube-proxy

        - Container runtime

        - Addons

        - DNS

control plane

控制平面, 容器编排层(k8s的专项-容器级别)。该平面暴露了api,接口,从而可以部署,定义,管理容器的生命周期。control plane的职责有包括集群的调度策略,检测并且对各种集群事件做出反应。 一般来说control plane可以在任何机器上跑,但是简单易用的实践就是通过脚本部署所有的control plane组件在同一台机器上(所以也会被称之为master node),然后在这台之外的机器上部署工作节点worker nodes。

control plane的组成:

       - kube-apiserver:系统对外接口,提供了一套restful api供客户端使用,任何资源请求或者调用都通过该组件的接口进行,kubectl和kubernetes dashboard就是通过这个实现的集群管理.是做为control plane外部请求的终端(front end)。该组成可以不断地横向拓展(靠部署更多实例),期间可以做到流量均分到这些实例上。

       - kube-scheduler

       - etcd: 稳定,高可用的k-v(key-value)存储组件,作为k8s所有集群信息的后端存储。生产实际使用该组件作为集群信息存储还是建议备份。

       - kube-controller-manager

       - cloud-controller-manager

3.k8s和docker的关系

docker就是镜像,包含运行所需的环境。用来构建运行容器

k8s则是部署pod,1个pod里面有多个容器。一般一个微服务就是在一个pod里面跑的,可能会注入一个sidecar容器作为辅助。

4.k8s如何实现集群管理的

5.kubeadm,kubernetes,kubelet,kubectl各自代表什么

kubeadm 快速创建k8s集群的最佳实践工具,可用kubeadm init,kubeadm join 快速构建集群。

kubernetes 简称k8s,谷歌开源的生产级别容器编排组件(production-grade container orchestration)

kubelet 在每个节点上跑的节点agent(自动化处理,可自闭环的系统)。可以通过:1)主机名 2)覆盖主机名的flag3)cloud provider的特殊逻辑 

kubectl 命令行工具,可以通过命令行指令管理k8s集群

6.常见的kubectel指令作用

拓展

StatefulSet 用来管理有状态应用的API对象

Deployment 给pod和replicaSet提供声明式的更新能力

StatefulSet会提供pod粘性id(稳定的,唯一标识),永久不变;持久存储。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐