黄图网站有哪些 推荐,kali搭建wordpress,京东联盟网站推广位怎么做,网站建设教程流程目录 83.简述你知道的 K8s 中几种 Controller 控制器并详述其工作原理。简述 ingress-controller 的工作机制。
特别说明#xff1a;
题目 1-68 属于【Kubernetes】的常规概念题#xff0c;即 “ 汇总#xff08;一#xff09;~#xff08;二十二#xff09;” 。 …目录 83.简述你知道的 K8s 中几种 Controller 控制器并详述其工作原理。简述 ingress-controller 的工作机制。
特别说明
题目 1-68 属于【Kubernetes】的常规概念题即 “ 汇总一~二十二” 。
题目 69-113 属于【Kubernetes】的生产应用题。 83.简述你知道的 K8s 中几种 Controller 控制器并详述其工作原理。简述 ingress-controller 的工作机制。
一deployment适合无状态的服务部署
1适合部署无状态的应用服务用来管理 pod 和 replicaset具有上线部署、副本设定、滚动更新、回滚等功能还可提供声明式更新例如只更新一个新的 Image。
2编写 yaml 文件并创建 nginx 服务 pod 资源。
[rootmaster test] # vim nginx-deployment.yam
apiVersion: apps/v1
kind: Deployment
metadata: name: nginx-deployment labels: app: nginx
spec: replicas: 3 selector: matchLabels: app: nginx
template: metadata: labels: app: nginx
spec: containers: - name:nginx1 image: nginx:1.15.4 ports: - containerPort: 80
3查看控制器参数可以使用 describe 或者 edit 两种方式。
① describe 方式[rootmaster test] # kubectl describe deploy nginx-deployment
② edit 方 式 [rootmaster test] # kubectl edit deploy nginx-deployment/
二Statefulset适合有状态的服务部署1特点
① 适合部署有状态应用
② 解决 Pod 的独立生命周期保持 Pod 启动顺序和唯一性
③ 稳定唯一的网络标识符持久存储例如etcd 配置文件节点地址发生变化将无法使用
④ 有序优雅的部署和扩展、删除和终止例如mysql 主从关系先启动主再启动从
⑤ 有序滚动更新。
2应用场景例如数据库
3无状态服务的特点
① deployment 认为所有的 pod 都是一样的
② 不用考虑顺序的要求
③ 不用考虑在哪个 node 节点上运行
④ 可以随意扩容和缩容。
4有状态服务的特点
① 实例之间有差别每个实例都有自己的独特性元数据不同例如 etcdzookeeper
② 实例之间不对等的关系以及依靠外部存储的应用
5常规的 service 服务和无头服务的区别
① service一组 Pod 访问策略提供 cluster-IP 群集之间通讯还提供负载均衡和服务发现。
② Headless service 无头服务不需要 cluster-IP直接绑定具体的 Pod 的 IP无头服务经常用于 statefulset 的有状态部署。
③ 创建无头服务的 service 资源和 dns 资源由于有状态服务的 IP 地址是动态的所以使用无头服务的时候要绑定 dns服务。
三Daemonset一次部署
1一次部署所有的 node 节点都会部署例如一些典型的应用场景
① 运行集群存储 daemon例如在每个Node 上运行 glusterd、ceph
② 在每个 Node 上运行日志收集 daemon例如 fluentd、logstash
③ 在每个Node 上运行监控 daemon例如 Prometheus Node Exporter
④ 在每一个 Node 上运行一个 Pod
⑤ 新加入的 Node 也同样会自动运行一个 Pod。
2应用场景
监控分布式存储日志收集等。
四Job一次性的执行任务
一次性执行任务类似 Linux 中的 job。
应用场景如离线数据处理视频解码等业务。
五Cronjob周期性的执行任务
周期性任务像 Linux 的 Crontab 一样。
应用场景如通知备份等。
使用 cronjob 要慎重用完之后要删掉不然会占用很多资源。
六ingress-controller 的工作机制
1诞生
- 通常情况下service 和 pod 的 IP 仅可在集群内部访问。
- k8s 提供了 service 方式NodePort 来提供对外的服务外部的服务可以通过访问 Node 节点 ipNodePort 端口来访问集群内部的资源外部的请求先到达 service 所选中的节点上然后负载均衡到每一个节点上。
- NodePort 虽然提供了对外的方式但也有很大弊端
① 由于 service 的实现方式user_space 、iptebles、3ipvs、方式这三种方式只支持在 4 层协议通信不支持 7 层协议因此 NodePort 不能代理 https服务
② NodePort 需要暴露 service 所属每个 node 节点上端口当需求越来越多端口数量过多导致维护成本过高并且集群不好管理。
2原理
- Ingress 也是 Kubernetes APl 的标准资源类型之一它其实就是一组基于 DNS 名称host或 URL 路径把请求转发到指定的 Service 资源的规则。用于将集群外部的请求流量转发到集群内部完成的服务发布。
- 我们需要明白的是Ingress 资源自身不能进行 “ 流量穿透 ”仅仅是一组规则的集合这些集合规则还需要其他功能的辅助比如监听某套接字然后根据这些规则的匹配进行路由转发这些能够为 Ingress 资源监听套接字并将流量转发的组件就是 IngressController。
- Ingress 控制器不同于 Deployment 等 pod 控制器的是Ingress 控制器不直接运行为 kube-controller-manager 的一部分它仅仅是 Kubernetes 集群的一个附件类似于 CoreDNS需要在集群上单独部署。
- ingress controller 通过监视 api server 获取相关 ingress、service、endpoint、secret、node、configmap 对象并在程序内部不断循环监视相关 service 是否有新的 endpoints 变化一旦发生变化则自动更新 nginx.conf 模板配置并产生新的配置文件进行 reload。 “【Kubernetes】常见面试题汇总” 系列文章可点击链接查看专栏详情K8s 面试题汇总