我想要一个 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 集群分区为专用节点区域,供专用用户组专用,如此处所述。我想知道污染节点会如何影响DaemonSets,包括那些对集群操作至关重要的节点(例如kube-proxy,kube-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-proxy,kube-flannel-ds-amd64)被特殊对待了?
我参加了CKA考试,因此需要在Daemonsets中工作一段时间。由于使用kubectl进行所有操作要快得多,而不是为k8s资源创建yaml清单,因此我想知道是否可以使用创建Daemonset资源kubectl。
我知道kubectl create daemonset至少目前无法使用常规创建它。并且在文档中没有对此的描述。但是也许有一种方法可以以不同的方式做到这一点?
我现在能做的最好的事情就是先创建Deployment,kubectl create deployment然后编辑它的输出清单。这里有什么选择吗?
我正在尝试使用 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) DaemonSets确保所有(或部分)节点运行 Pod 的副本。当节点添加到集群时,Pod 也会添加到其中。
kubernetes kubelet 在每个节点上运行,并保持该节点上的其他 pod 运行。在 Marko Luksa 的《Kubernetes In Action》第 4.4 章中,他说 kube-proxy 是一个 DaemonSet,但没有明确说明 kubelet 是。
有一个具有 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) 我想部署一个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 确保所有或部分kubernetes 节点运行 Pod 的副本。
“或某些”部分意味着在某些情况下某些节点不会运行 Pod。对于我的用例,所有节点都运行一个实例非常重要。在什么情况下节点不会运行 Pod 实例,即使它部署为守护进程集?
我想在节点上部署一个Pod来承载我的服务(例如本示例的GitLab)。问题是:在节点故障(如重新启动)之后,将不会重新创建Pod。解决方案:使用StatefulSet,ReplicaSet或DaemonSet确保在节点故障后创建Pod。但是这种情况下最好的是什么?
此Pod是有状态的(我正在使用卷hostPath来保留数据),并已部署nodeSelector以始终将其保留在同一节点上。
这是示例的简单YAML文件:https : //pastebin.com/WNDYTqSG
它创建3个Pod(每个Pod一个Set),并带有一个卷以保持数据有状态。实际上,所有这些解决方案都能满足我的需求,但是我不知道这种情况下是否有最佳实践。
您能否帮助我在这些解决方案之间进行选择,以部署单个有状态Pod?
我想知道除了 yaml 文件之外,是否有更简单的方法可以在 k8s 中创建守护进程。例如,对于 pod,我们有kubectl run --generator=run-pod/v1命令。我想知道DS是否有类似的东西。
提前致谢。
我使用 helm 安装了 nginx-ingress。之后我注意到默认值controller.kind是deployment而不是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) 我有疑问,希望能帮到你。
假设我有 4 个节点并创建了一个 ReplicaSet 值为 3 的部署,pod 规范具有标签 xyz。现在创建一个带有标签 xyz 的 Pod 的 DaemonSet,这与上面提到的相同。现在最终会有多少个豆荚 4 或 3 个,它是如何工作的?
请尽快回复。
我正在尝试按照此文档在 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 关闭验证
但是文档中或谷歌上的任何地方都没有关于这些必填字段的信息:(
daemonset ×13
kubernetes ×13
cadvisor ×1
docker ×1
filebeat ×1
kubectl ×1
nginx ×1
pod ×1
replicaset ×1
statefulset ×1