zoukankan      html  css  js  c++  java
  • 运维面试题之k8s

    吐槽:

    我干嘛要知道这些,能用不就行了k8s真香

    Kubernetes有哪些特性?

    Kubernetes是自动化容器编排的开源平台,目标是让部署容器化的应用简单并且高效,提供了应用部署,规划,更新,维护的一种机制

    Kubernetes一个核心的特点就是可以让容器按照用户的期望状态运行

    Kubernetes有哪些核心组件这些组件负责什么工作?

    etcd:提供数据库服务保存了整个集群的状态
    kube-apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
    kube-controller-manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
    cloud-controller-manager:是与底层云计算服务商交互的控制器
    kub-scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
    kubelet:负责维护容器的生命周期,同时也负责Volume和网络的管理
    kube-proxy:负责为Service提供内部的服务发现和负载均衡,并维护网络规则
    container-runtime:是负责管理运行容器的软件,比如docker

    Pod是什么?

    在k8s中最小的管理元素不是容器而是Pod,Pod的上下文可以理解为多个linux命名空间的联合,包括PID命名空间同一个Pod中的容器可以互相看到PID、网络命名空间同一个Pod中的容器可以使用同一IP

    为什么Kubernetes要设计Pod?

    Pod中的容器可以共用Pod提供的基础设施

    Pod的生命周期与管理器的生命周期的分离

    调度和管理的易用性,解偶控制器和服务,后段管理器仅仅监控Pod

    描述一下Pod的生命周期有哪些状态?

    status 属性里面有一个phase字段记录了Pod的状态

    正常情况下起一个新Pod的过程

    Pending表示Pod已经被同意创建,正在等待kube-scheduler选择合适的节点创建,一般是在准备镜像

    Running表示Pod中所有容器已经被创建,并且至少有一个容器正在运行或者是正在启动或者正在重启

    Succeeded表示所有容器已经成功终止,且不会再启动

    Failed表示Pod中所有容器都是非0状态退出

    Unknown表示无法读取Pod状态通常是kube-controller-manager无法与Pod通信

    怎么看Pod中的容器是否健康?

    status 属性里面有一个conditions字段记录了容器状态

    其中 type: Ready=True 表示Pod已经准备就绪,切已经加入了Service的负载均衡当中

    type: ContainersReady=True表示所有Pod中所有容器都通过了健康检查(如有),并全部准备就绪

    创建一个Pod会发生什么事?

    1、客户端提交Pod的配置信息(可以是Deployment定义好的信息)到kube-apiserver,kube-apiserve会把Pod信息存储到ETCD当中

    2、kube-scheduler 检测到Pod信息会开始调度

    3、kube-scheduler 开始调度预选,主要是过滤掉不符合Pod要求的节点

    4、kube-scheduler 开始调度调优,主要是会给节点打分以选择更加适合的节点

    5、kube-scheduler 选择好节点后会把结果存储到ETCD

    6、kubelet  根据调度结果执行Pod创建操作

    删除一个Pod会发生什么事情?

    kube-apiserver会接受到用户的删除指令,默认有30秒时间等待优雅退出,超过30秒会被标记为死亡状态

    此时Pod的状态是Terminating,Kubelet看到Pod标记为Terminating开始了关闭Pod的工作

    1、Pod从service的列表中被删除

    2、如果该Pod定义了一个停止前的钩子,其会在pod内部被调用,停止钩子一般定义了如何优雅结束进程

    3、进程被发送TERM信号(kill -14)

    4、当超过优雅退出时间时,Pod中的所有进程都很被发送SIGKILL信号(kill -9)

    kubernetes 常用的集群网络模型,有哪些特性?
    Flanneld:
    常用于OpenStack等云平台配合host-gw防止数据被多次封装,支持多种协议UDP、VxLAN、AWS VPC等,不支持Network Policy
    Open vSwitch:
    可以用于实现k8s多租户的网络隔离,支持多种隧道协议GRE、VxLAN、 IPsec
    Contiv:
    常用于面向应用的网络策略,甚至可以配合硬件设备使用比如Cisco-SDN,并且支持BGP、VxLAN等协议

    k8s的Service是什么?

    Pod每次重启或者从新部署IP地址都会产生变化,这使得Pod间通信和Pod与外部通信变得困难,这时候Pod就需要一个固定的入口这就是Service

    每个Service都有一个clusterIP,clusterIP是固定的是外界访问Pod的唯一入口,Service背后通常绑定了一组相同配置的Pod,通过负载均衡的方式把外界请求分配的多个Pod

    k8s是怎么进行服务注册的?

    Pod启动后会加载当前环境所有Service信息,以便不同Pod根据Service名进行通信

    k8s集群外流量怎么访问Pod?

    可以通过Service的NodePort方式访问,会在所有节点监听同一个端口比如30000端口,访问节点30000端口的流量会被重定向到对应的Service上面

  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/37yan/p/10730648.html
Copyright © 2011-2022 走看看