一、KuberNetes面试常见问题
### --- service是怎么关联pod的
~~~ 创建Pod是都会定义Pod的便签,
~~~ 比如role=frontend,Service通过Selector字段匹配该标签即可关联至该Pod,
~~~ Pod和Service需要在同一个namespace,中文文档。
### --- HPA V1 V2的区别
~~~ HPA v1为稳定版自动水平伸缩,只支持CPU指标。
~~~ V2为beta版本,分为v2beta1(支持CPU、内存和自定义指标),
~~~ v2beta2(支持CPU、内存、自定义指标Custom和额外指标ExternalMetrics),
~~~ 从k8s 1.11之后,度量指标的采集依赖metrics-server,弃用了heapster,中文文档。
### --- Kubernetes Master节点高可用
~~~ Kube-APIServer为无状态服务,可以启动多个,通过负载均衡进行轮训。
~~~ ControllerManager和Scheduler为有状态服务,多节点启动会进行选主,
~~~ 主节点信息保存在kube-system命名空间下的对应名称的endpoint中
### --- QoS
~~~ 最高级别:Guaranteed节点资源不够时第一个被杀掉,
~~~ Burstable第二个被杀掉,BestEffort第一个被杀掉
### --- flannel和calico
~~~ 如果没有用过flannel可以直接说没有用过flannel,都是用的calico,
~~~ 因为calico性能强大,并且配置简单。
~~~ Flannel的host-gw虽然性能好,但是只能用于大二层网络,vxlan对内核要求高,
~~~ 并且flannel不支持网络策略,所以采用calico。
~~~ 因为公司和公有云网络环境不支持BGP,所以目前采用的都是IPIP模式。
### --- Helm优点
~~~ 大型项目更加方便管理,可以一键创建一个环境,
~~~ 可以对整个项目进行版本升级、回滚,部署更加方便。
### --- 公司的架构是什么样的?
~~~ 我们的架构是这样的,三台master,三台etcd,etcd和master没有放在一起。
~~~ 然后在指定的节点上部署了ingress nginx,
~~~ 然后外部有个网关(可以选择性说网关是硬件设备F5或者DMZ的nginx,或者公有云的LB)
~~~ 连接到了k8s ingress节点的80和433,然后有个通配符域名指向了ingress,
~~~ 在ingress上面又做的分发。