标签: daemonset

如何从同一节点中的另一个 pod 与 daemonset pod 通信?

我想要一个 daemonset-redis,其中每个节点都有自己的缓存,每个部署 pod 将与其本地 daemonset-redis 通信如何实现?如何从 docker-container 中引用同一节点中的 daemonset pod?

更新:我宁愿不使用服务选项并确保每个 pod 访问其本地守护进程集

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: redislocal
spec:
  selector:
    matchLabels:
      name: redislocal
  template:
    metadata:
      labels:
        name: redislocal
    spec:
      hostNetwork: true
      containers:
      - name: redislocal
        image: redis:5.0.5-alpine
        ports:
        - containerPort: 6379
          hostPort: 6379

Run Code Online (Sandbox Code Playgroud)

kubernetes daemonset

8
推荐指数
1
解决办法
2497
查看次数

存在容忍度的 Kubernetes DaemonSets

我正在考虑将我的 Kubernetes 集群分区为专用节点区域,供专用用户组专用,如此处所述。我想知道污染节点会如何影响DaemonSets,包括那些对集群操作至关重要的节点(例如kube-proxykube-flannel-ds-amd64)?

文档守护进程 pod 尊重污点和容忍度。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只有在我删除节点的污点之后(或者可能是在我向 pod 内的 pod 规范添加了容忍度之后DaemonSet),它才会被重新安排。

那么DaemonSets 和 tolerations 详细来说是如何互操作的。难道某些DaemonSets(比如kube-proxykube-flannel-ds-amd64)被特殊对待了?

kubernetes daemonset

7
推荐指数
1
解决办法
2万
查看次数

使用kubectl创建Daemonset?

我参加了CKA考试,因此需要在Daemonsets中工作一段时间。由于使用kubectl进行所有操作要快得多,而不是为k8s资源创建yaml清单,因此我想知道是否可以使用创建Daemonset资源kubectl

我知道kubectl create daemonset至少目前无法使用常规创建它。并且在文档中没有对此的描述。但是也许有一种方法可以以不同的方式做到这一点?

我现在能做的最好的事情就是先创建Deployment,kubectl create deployment然后编辑它的输出清单。这里有什么选择吗?

kubernetes kubectl daemonset

6
推荐指数
3
解决办法
2108
查看次数

无法识别“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

我按照说明下载了清单文件

curl -L -O https://raw.githubusercontent.com/elastic/beats/7.4/deploy/kubernetes/filebeat-kubernetes.yaml
Run Code Online (Sandbox Code Playgroud)

下面的 yaml 文件的内容

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-config
  namespace: kube-system
  labels:
    k8s-app: filebeat
data:
  filebeat.yml: |-
    filebeat.inputs:
    - type: container
      paths:
        - /var/log/containers/*.log
      processors:
        - add_kubernetes_metadata:
            host: ${NODE_NAME}
            matchers:
            - logs_path:
                logs_path: "/var/log/containers/"

    # To enable hints based autodiscover, remove `filebeat.inputs` configuration and uncomment this:
    #filebeat.autodiscover:
    #  providers:
    #    - type: kubernetes
    #      host: ${NODE_NAME}
    #      hints.enabled: true
    #      hints.default_config:
    #        type: container
    # …
Run Code Online (Sandbox Code Playgroud)

kubernetes filebeat daemonset

6
推荐指数
1
解决办法
5079
查看次数

kubernetes kubelet 是 DaemonSet 吗?

DaemonSets确保所有(或部分)节点运行 Pod 的副本。当节点添加到集群时,Pod 也会添加到其中。

kubernetes kubelet 在每个节点上运行,并保持该节点上的其他 pod 运行。在 Marko Luksa 的《Kubernetes In Action》第 4.4 章中,他说 kube-proxy 是一个 DaemonSet,但没有明确说明 kubelet 是。

这是kubernetes pod/节点架构的图片,其中包括 kube-proxy 和 kubelet 供参考。

kubernetes daemonset

6
推荐指数
1
解决办法
2201
查看次数

如何在kubernetes的每个节点而不是daemonset中运行作业

有一个具有 100 个节点的 kubernetes 集群,我必须手动清理特定图像,我知道 kubelet 垃圾收集可能会有所帮助,但它不适用于我的情况。浏览互联网后,我找到了一个解决方案——docker in docker,解决了我的问题。

我只想删除每个节点中的图像一次,有什么方法可以在每个节点中运行一次作业吗?

我检查了 kubernetes 标签和 podaffinity,但仍然没有想法,任何人都可以提供帮助吗?

另外,我尝试使用 daemonset 来解决问题,但事实证明它只能删除部分节点的图像,而不是所有节点,我不知道可能是什么问题......

这是守护程序集示例:

kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: test-ds
  labels:
    k8s-app: test
spec:
  selector:
    matchLabels:
      k8s-app: test
  template:
    metadata:
      labels:
        k8s-app: test
    spec:
      containers:
      - name: test
        env:
        - name: DELETE_IMAGE_NAME
          value: "nginx"
        image: busybox
        command: ['sh', '-c', 'curl --unix-socket /var/run/docker.sock -X DELETE http://localhost/v1.39/images/$(DELETE_IMAGE_NAME)']
        securityContext:
          privileged: true
        volumeMounts:
        - mountPath: /var/run/docker.sock
          name: docker-sock-volume
        ports:
        - containerPort: 80
      volumes:
      - name: docker-sock-volume
        hostPath:
          # location …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes daemonset kubernetes-jobs

5
推荐指数
1
解决办法
4299
查看次数

调度程序不在主节点中为DaemonSet调度Pod

我想部署一个DaemonSet用于监视目的.所以这些Pod需要部署在所有节点中.

DaemonSet确保所有(或某些)节点运行Pod的副本.

我正在使用DaemonSet,以便所有节点都获得副本.

    spec:
      containers:
      - name: fluentd
        image: aerocloud.io/containers/fluentd:0.0.1
        volumeMounts:
        - name: varlog
          mountPath: /var/log
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
Run Code Online (Sandbox Code Playgroud)

当我DaemonSet在我的Kubernetes集群中创建它时,我没有看到Pod在我的主节点中运行.

此DaemonSet的Pod正在除主节点之外的所有节点中运行.

我在这里错过了什么?如何强制调度程序在主节点中安排Pod?

kubernetes daemonset

4
推荐指数
1
解决办法
3533
查看次数

守护进程集是否总是部署到所有节点?

我想知道 kubernetes 中的守护进程是否总是部署到所有节点。

我的困惑来自于以下对守护进程的描述

DaemonSet 确保所有或部分kubernetes 节点运行 Pod 的副本。

“或某些”部分意味着在某些情况下某些节点不会运行 Pod。对于我的用例,所有节点都运行一个实例非常重要。在什么情况下节点不会运行 Pod 实例,即使它部署为守护进程集?

kubernetes daemonset

3
推荐指数
1
解决办法
3556
查看次数

StatefulSet,ReplicaSet或DaemonSet。一个Pod最好是什么?

我想在节点上部署一个Pod来承载我的服务(例如本示例的GitLab)。问题是:在节点故障(如重新启动)之后,将不会重新创建Pod。解决方案:使用StatefulSet,ReplicaSet或DaemonSet确保在节点故障后创建Pod。但是这种情况下最好的是什么?

此Pod是有状态的(我正在使用卷hostPath来保留数据),并已部署nodeSelector以始终将其保留在同一节点上。

这是示例的简单YAML文件:https : //pastebin.com/WNDYTqSG

它创建3个Pod(每个Pod一个Set),并带有一个卷以保持数据有状态。实际上,所有这些解决方案都能满足我的需求,但是我不知道这种情况下是否有最佳实践。

您能否帮助我在这些解决方案之间进行选择,以部署单个有状态Pod?

pod replicaset kubernetes statefulset daemonset

2
推荐指数
1
解决办法
846
查看次数

是否有命令在 kubernetes 中创建守护进程?

我想知道除了 yaml 文件之外,是否有更简单的方法可以在 k8s 中创建守护进程。例如,对于 pod,我们有kubectl run --generator=run-pod/v1命令。我想知道DS是否有类似的东西。

提前致谢。

kubernetes daemonset

2
推荐指数
1
解决办法
1681
查看次数

将 nginx 入口从部署更新为 daemonset

我使用 helm 安装了 nginx-ingress。之后我注意到默认值controller.kinddeployment而不是daemonset,正如我在官方文档中找到的那样。

那么如何才能更新controller.kindfromdeployment到 而daemonset无需从头开始重新安装呢?

helm install nginx-ingress nginx-stable/nginx-ingress --set controller.service.type=NodePort --set controller.service.httpPort.nodePort=30000 --set controller.service.httpsPort.nodePort=30443
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes daemonset kubernetes-ingress nginx-ingress

2
推荐指数
1
解决办法
2577
查看次数

kubernetes daemonset 如何工作?

我有疑问,希望能帮到你。

假设我有 4 个节点并创建了一个 ReplicaSet 值为 3 的部署,pod 规范具有标签 xyz。现在创建一个带有标签 xyz 的 Pod 的 DaemonSet,这与上面提到的相同。现在最终会有多少个豆荚 4 或 3 个,它是如何工作的?

请尽快回复。

kubernetes daemonset

1
推荐指数
1
解决办法
109
查看次数

DaemonSet 中缺少必填字段

我正在尝试按照此文档在 Kubernetes 集群上运行 Cadvisor https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/

yaml 文件的内容如下:

apiVersion: v1
kind: Namespace
metadata:
  name: kube-system
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: cadvisor
  namespace: kube-system
  labels:
    name: cadvisor
spec:
  selector:
    matchLabels:
      name: cadvisor
  template:
    metadata:
      labels:
        name: cadvisor
    spec:
      containers:
      - image: google/cadvisor:latest
        name: cadvisor
        ports:
        - containerPort: 8080
      restartPolicy: Always
status: {}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试部署它时:

kubectl apply -f cadvisor.daemonset.yaml
Run Code Online (Sandbox Code Playgroud)

我得到输出+错误:

错误:验证“cadvisor.daemonset.yaml”时出错:验证数据时出错:[ValidationError(DaemonSet.status): io.k8s.api.apps.v1.DaemonSetStatus, ValidationError(DaemonSet.status) 中缺少必填字段“currentNumberScheduled”: 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 关闭验证

但是文档中或谷歌上的任何地方都没有关于这些必填字段的信息:(

kubernetes cadvisor daemonset

0
推荐指数
1
解决办法
1397
查看次数