问题标签 [daemonset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - kubernetes 节点网络从 kubernetes master 分裂时的 Pod 状态
由于网络问题或维护,运行 DaemonSet 的 kubernetes 节点无法再访问 kubernetes master。pod 仍在运行,直到主机重新启动。
如果节点重新启动但仍无法访问主节点,是否有可能重新启动 pod?
该映像来自运行在 Kubernetes 主服务器上的 docker 注册表,因此在这种情况下,与注册表的连接也会丢失。Pod 中运行的软件能够在离线时记录数据并在网络可用时重新发送,但如果由于 docker 进程未启动而发生重启,则不会发生这种情况。
编辑:示例用例是:集群主节点离线。从节点仍在运行。然后从节点由于电源复位而重新启动。重启后 Pod 没有在 slave 上启动,但是守护进程 docker 正在运行(docker ps -a 显示了 Pod 的 docker ps 但它们没有运行)。
目标:让 pod 的 docker 进程在重启时启动。并且在集群主节点恢复后仍然能够管理 Pod。
kubernetes - Is it possible to know if the node where a Kubernetes Pod is being scheduled is master or worker?
I'm currently using Kubernetes to schedule a DaemonSet on both master and worker nodes.
The DaemonSet definition is the same for both node types (same image, same volumes, etc), the only difference is that when the entrypoint is executed, I need to write a different configuration file (which is generated in Python with some dynamic values) if the node is a master or a worker.
Currently, to overcome this I'm using two different DaemonSet definitions with an env value which tells if the node is a master or not. Here's the yaml file (only relevant parts):
However, since the only difference is the IS_MASTER value, I want to collapse both the definitions in a single one that programmatically understands if the current node where the pod is being scheduled is a master or a worker.
Is there any way to know this information about the node programmatically (even reading a configuration file [for example something that only the master has or viceversa] in the node or something like that)?
Thanks in advance.
kubernetes - 如何与同一节点中另一个 pod 的 daemonset pod 通信?
我想要一个 daemonset-redis,其中每个节点都有自己的缓存,每个部署 pod 都将与其本地 daemonset-redis 通信如何实现?如何从 docker-container 中引用同一节点中的 daemonset pod?
更新:我宁愿不使用服务选项并确保每个 pod 访问其本地守护程序集
kubernetes - 存在容忍度的 Kubernetes DaemonSets
我正在考虑将我的 Kubernetes 集群划分为专用节点区域,供专用用户集独家使用,如此处所述。我想知道污染节点会如何影响DaemonSets
,包括那些对集群操作至关重要的节点(例如kube-proxy
,kube-flannel-ds-amd64
)?
文档说守护进程 pod 尊重 taints 和 tolerations。kubectl taint nodes node-x zone=zone-y:NoSchedule
但如果是这样,当 Pod(不受我控制但由 Kubernetes 自己拥有DaemonSet kube-proxy
)不携带相应的容忍度时,系统如何在受污染的节点上调度例如 kube-proxy Pod 。
到目前为止,我凭经验发现 Kubernetes 1.14 重新安排了一个 kube-proxy pod(在我在 tainted 上删除它之后node-x
),这似乎与文档相矛盾。另一方面,我自己的情况似乎并非如此DaemonSet
。当我杀死它的 pod 时node-x
,只有在我删除节点的 taint 之后(或者大概是在我在 pod 的规范中添加容忍度之后)才会重新安排它DaemonSet
。
那么DaemonSet
s 和 tolerations 如何在细节上进行互操作。会不会是某些DaemonSet
s(例如kube-proxy
, kube-flannel-ds-amd64
)被特殊对待?
kubernetes - Kubernetes 无法在 Auto Scaling GKE 节点池中的节点上调度 Daemonset pod
我们看到 GKE kubernetes 调度程序无法或不愿意在 Auto Scaling 节点池中的节点上调度 Daemonset pod 的问题。
我们在集群中有三个节点池,但是该pool-x
池用于排他地调度由 HPA 支持的单个部署,节点在此池中应用了污点“node-use=pool-x:NoSchedule”。我们还部署了一个 filebeat Daemonset,我们在其上设置了一个非常宽松的容忍规范operator: Exists
(希望这是正确的),以确保在集群中的每个节点上调度 Daemonset。
我们的假设是,在pool-x
自动扩展的情况下,filebeat Daemonset 将在调度分配给该节点的任何 pod 之前在该节点上调度。但是,我们注意到随着新节点添加到池中,filebeat pod 未能放置在节点上并且处于永久“待处理”状态。这是一个 filebeat Daemonset 的描述输出(截断)的示例:
以及其中一个“待处理”filebeat pod 的事件:
可以看到,节点没有足够的资源来调度 filebeat pod CPU 请求由于节点上运行的其他 pod 而耗尽。但是,为什么在调度任何其他 pod 之前没有将 Daemonset pod 放置在节点上。似乎 Daemonset 的定义需要优先级调度。
另外值得注意的是,如果由于无法满足 CPU 请求而删除 filebeat 处于“待定”调度的节点上的 pod,则会立即在该节点上调度 filebeat,这表明观察到了一些调度优先级。
最终,我们只想确保 filebeat Daemonset 能够在集群中的每个节点上调度一个 pod,并让该优先级与我们的集群自动缩放和 HPA 很好地配合使用。关于我们如何实现这一目标的任何想法?
我们希望避免使用Pod Priority,因为它显然是 GKE 中的一个 alpha 功能,我们目前无法使用它。
kubernetes - 守护程序集是否总是部署到所有节点?
我想知道 kubernetes 中的守护进程是否将始终部署到所有节点。
我的困惑来自以下对守护进程的描述
DaemonSet 确保所有或部分kubernetes 节点运行 Pod 的副本。
“或某些”部分意味着在某些情况下某些节点不会运行 pod。对于我的用例,所有节点都运行一个实例很重要。在哪些情况下节点不会运行 pod 的实例,即使它被部署为 daemonset?
kubernetes - 无法识别“filebeat-kubernetes.yaml”:版本“extensions/v1beta1”中的种类“DaemonSet”没有匹配项
我正在尝试使用 k8s 1.16 https://www.elastic.co/guide/en/beats/filebeat/7.4/running-on-kubernetes.html在 minikube 上运行 FileBeat
我按照说明下载了清单文件
下面yaml文件的内容
当我尝试部署步骤时,
我得到输出+错误:
configmap/filebeat-config created clusterrolebinding.rbac.authorization.k8s.io/filebeat created clusterrole.rbac.authorization.k8s.io/filebeat created serviceaccount/filebeat created 错误:无法识别“filebeat-kubernetes.yaml”:没有匹配版本“extensions/v1beta1”中的种类“DaemonSet”
kubernetes - 是否有在 kubernetes 中创建守护程序集的命令式命令?
我想知道除了 yaml 文件之外,是否有更简单的方法可以在 k8s 中创建守护程序集。例如,对于 pod,我们有kubectl run --generator=run-pod/v1
命令。我想知道DS是否有类似的东西。
提前致谢。
kubernetes - DaemonSet 中缺少必填字段
我正在尝试遵循此文档https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/在 Kubernetes 集群上运行 Cadvisor
yaml文件内容如下:
但是当我尝试部署它时:
我得到输出+错误:
错误:验证“cadvisor.daemonset.yaml”时出错:验证数据时出错:[ValidationError(DaemonSet.status):io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“currentNumberScheduled”,ValidationError(DaemonSet.status):在 io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“numberMisscheduled”,ValidationError(DaemonSet.status):在 io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“desiredNumberScheduled”,ValidationError(DaemonSet.status ): io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“numberReady”];如果您选择忽略这些错误,请使用 --validate=false 关闭验证
但是在文档或谷歌的任何地方都没有关于这些必填字段的信息:(