容器技术
ubuntu使用APT安装docker并指定版本
Helm部署与使用
Helm常用命令
从Helm仓库创建应用流程示例
Helm部署与使用
K8S中部署mysql-ha高可用集群
helm启动mysql-ha
helm几个常用仓库
Kubernetes使用helm部署Mysql-Ha
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
k8s之yaml文件详解
将 MySQL 通过 bitpoke/mysql-operator 部署到 k8s 内部
k8s pvc扩容:pvc创建后扩容
K8S性能分析
部署Metrics Server
Kubernetes集群搭建
kubespray 部署常见问题和优化汇总
kubernetes-sigs/kubespray at release-2.15
K8S-pod配置文件详解
KubeSphere知识库
在 Kubernetes 上最小化安装 KubeSphere
卸载 KubeSphere 和 Kubernetes
KubeSphere 应用商店
修改pod中容器的时区
k8s之Pod安全策略
Harbor 登陆失败,用户名或者密码不正确。405 Not Allowed
Docker-leanote_n1
kubesphere/kubekey
Kubernetes Static Pod (静态Pod)
kubernets kube-proxy的代理 iptables和ipvs - 30岁再次出发 - 博客园
k8s生产实践之获取客户端真实IP - SSgeek - 博客园
kube-proxy ip-tables故障解决
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
prometheus operator 监控redis-exporter
Helm3 安装 ElasticSearch & Kibana 7.x 版本
kubernete强力删除namespace_redis删除namespace命令
EFK (Elasticsearch + Fluentd + Kibana) 日志分析系统
k8s日志收集实战(无坑)
fluentd收集k8s集群pod日志
Elasticsearch+Fluentd+Kibana 日志收集系统的搭建
TKE/EKS之configmap,secret只读挂载
K8s基于Reloader的ConfigMap/Secret热更新
使用 Reloader 实现热部署_k8s reloader
k8s使用Reloader实现更新configmap后自动重启pod
在 Kubernetes 上对 gRPC 服务器进行健康检查 | Kubernetes
Kubernetes ( k8s ) gRPC服务 健康检查 ( livenessProbe ) 与 就绪检查 ( readinessProbe )
排查kubernetes中高磁盘占用pod
helm 安装 MongoDB 集群
helm 安装 Redis 1 主 2 从 3哨兵
【k8s】使用 Reloader 实现热部署
k8s证书过期,更新后kubelet启动失败
kubeadm证书/etcd证书过期处理
三种监控 Kubernetes 集群证书过期方案
K8s 集群(kubeadm) CA 证书过期解决方案
k8s调度、污点、容忍、不可调度、排水、数据卷挂载
5分钟搞懂K8S的污点和容忍度(理论+实战)
Kubernetes进阶-8基于Istio实现微服务治理
macvlan案例配置
快速解决Dockerhub镜像站无法访问问题
info_scan开源漏洞扫描主系统部署
本文档使用 MrDoc 发布
-
+
首页
Kubernetes Static Pod (静态Pod)
 堆叠etcd集群:一个集群里面有3个master,每个master里面都有etcd这个pod,这个pod通常通过kubelet自管理。 kubelet会去读取一个config,这个config定义了static pod path,kubelet它本身的作用是维护pod的生命周期,他有几种方式来加载pod的清单,一种方式是监听api server,还有一种方式是它会去扫描本地的static pod path,扫描这个目录,它要去看这个目录里面有没有pod清单,如果有的话就直接加载。 这种模式就是etcd会在每个master上面部署,它是以静态的方式去部署。 堆叠式好处:apiserver和etcd之间是紧绑定的,所有apiserver的请求以loopback方式发送到etcd,读操作可以直接读走,读操作不需要经过master,读操作不需要经过网络调用的,本地就走了,其次这些组件放在一起好管理维护,不需要网络调用就可以读取数据。还有etcd是一个重落盘的,它对disk io是有要求的,其他的应用没有那么高的要求,那么放在一起也是ok的。 ## 什么是 Static Pod _静态 Pod_ 在指定的节点上由 kubelet 守护进程直接管理,不需要 [API 服务器](https://links.jianshu.com/go?to=https%3A%2F%2Fkubernetes.io%2Fzh%2Fdocs%2Freference%2Fcommand-line-tools-reference%2Fkube-apiserver%2F) 监管。 与由控制面管理的 Pod(例如,[Deployment](https://links.jianshu.com/go?to=https%3A%2F%2Fkubernetes.io%2Fzh%2Fdocs%2Fconcepts%2Fworkloads%2Fcontrollers%2Fdeployment%2F)) 不同;kubelet 监视每个静态 Pod(在它崩溃之后重新启动)。 静态 Pod 永远都会绑定到一个指定节点上的 [Kubelet](https://links.jianshu.com/go?to=https%3A%2F%2Fkubernetes.io%2Fdocs%2Freference%2Fgenerated%2Fkubelet)。 kubelet 会尝试通过 Kubernetes API 服务器为每个静态 Pod 自动创建一个 [镜像 Pod](https://links.jianshu.com/go?to=https%3A%2F%2Fkubernetes.io%2Fzh%2Fdocs%2Freference%2Fglossary%2F%3Fall%3Dtrue%23term-mirror-pod)。 这意味着节点上运行的静态 Pod 对 API 服务来说是可见的,但是不能通过 API 服务器来控制。 Pod 名称将把以连字符开头的节点主机名作为后缀。 ## 最常见的 Static Pod - etcd - kube-apiserver - kube-controller-manager - kube-scheduler ## 如何创建 Static Pod ### 静态文件 通过查看kubelet的service文件可以看到:  运行中的 kubelet 会定期扫描配置的目录(比如例子中的 /etc/kubernetes/manifests 目录)中的变化, 并且根据文件中出现/消失的 Pod 来添加/删除 Pod。 ### Http请求 kubelet 周期地从 –manifest-url= 参数指定的地址下载⽂件,并且把它翻译成 Json/Yaml 格式的 pod 定义。此后的操作⽅式与 –pod-manifest-path= 相同,kubelet 会不时地重新下载该⽂件,当⽂件变化时对应地终止或启动静态 pod;过程和原理都是一样的这里就不再详细介绍了。 静态Pod是由kubelet进行管理的仅存在特定的Node上的Pod。这些Pod不能通过API Server进行管理,也无法和RC、Deployment或者DaemonSet关联,并且不存在健康检查,该类型的Pod由kubelet创建的,并且只在kubelet所在的Node上运行。 创建静态Pod的方式有两种: 配置文件 HTTP 一、配置文件 首先需要时设定kubelet启动参数“--podmainifest-path”,或者在kubelet的配置文件中设定staticPodPath,指定的路径是kubelet监控的路径(如果k8s集群由kubeadm搭建,那默认存储在目录/etc/kubernetes/manifests下),kubelet会定期检查该目录,并根据该目录下的yaml文件和json文件进行创建Pod操作。 例如:配置目录为/etc/kubelet.d,配置启动参数为--podmainifest-path=/etc/kubelet.d,然后重启kubelet。 在/etc/kubelet.d目录下放static\_pod.yaml文件,内容如下: \--- apiVersion: v1 kind: Pod metadata: name: static-pod labels: name: static-pod spec: containers: - name: static-pod image: nginx ports: - name: web containerPort: 80 稍等片刻,便能够发现集群启动了一个pod(如长时间未启动,查看系统日志、var/log/messages) $ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default static-pod-host-192-168-100-121 1/1 Running 0 8s 该pod无法使用API Server删除,如果尝试删除会使该pod处于pending状态,并且一直不会被删除。如果要删除该pod,只需要到之前存放yaml文件的目录下,删除相关的yaml文件即可 二、HTTP方式 同通过设定kubelet的启动参数‘--manifest-url’,kubelet将会定期从该URL地址下载Pod的定义文件,并以yanl或者json文件的格式进行解析,然后创建pod,实现方式和配置文件的方式一样
adouk
2023年3月13日 17:41
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码