第五章 Kubernetes Pod控制器-DaemonSet

devtools/2025/2/5 11:19:37/

目录

默认pod不会被调度到Master节点

DaemonSet是什么

DaemonSet实操

清除之前实验创建的deployment

创建DaemonSet资源管理器


默认pod不会被调度到Master节点

Kubernetets集群默认master主节点会有一个污点,这个污点会让pod无法调度到master节点上。如果想要调度到master主节点运行pod,需要调度容忍,有了调度容忍之后就具备了调度的可能性了。目前暂时不设置调度容忍,DaemonSet只会在除了master主节点之外的node节点部署或回收pod。

我们可以通过命令查看master节点详情:kubectl describe node <master节点名称>

Taints:             node-role.kubernetes.io/control-plane:NoSchedule

Taints表示污点,NoSchedule即不允许Pod 被调度到这个节点上。

DaemonSet是什么

DaemonSet确保全部或一些Node上运行一个pod副本,为什么是全部或一些node?

原因就是上面提到的,如果设置node节点的污点(Taints)和容忍度(Tolerations),调度会考虑这两个条件进行调度到相应可以调度的节点上部署pod。比如上面提到的默认下,master节点是因为设置了污点以及NoSchedule,那么集群就不会在master节点上调度部署pod。

由于DaemonSet有这个特性:动态确保在node节点上运行一个pod副本。所以当新增node节点或移除node节点,DaemonSet都会有自动进行pod的部署或移除动作。

1、新增node节点,DaemonSet会自动将pod部署在新增node节点。

2、移除node节点,DaemonSet会自动将pod移除。

3、删除DaemonSet控制器,将会删除它所创建的所有pod。

以下是针对1-2两个点所画的示意图:

DaemonSet实操

清除之前实验创建的deployment

[root@k8s-master01 5]# kubectl get svc
NAME           TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
kubernetes     ClusterIP   10.0.0.1      <none>        443/TCP   10d
myapp-deploy   ClusterIP   10.3.197.72   <none>        80/TCP    37h
[root@k8s-master01 5]# kubectl delete deployment myapp-deploy
deployment.apps "myapp-deploy" deleted
[root@k8s-master01 5]# kubectl get deployment
No resources found in default namespace.
[root@k8s-master01 5]# kubectl delete svc myapp-deploy
service "myapp-deploy" deleted
[root@k8s-master01 5]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   10d
[root@k8s-master01 5]# kubectl get pod
No resources found in default namespace.

创建DaemonSet资源管理器

vim  8.ds.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:name: deamonset-demolabels:app: deamonset-demo
spec:selector:matchLabels:name: deamonset-demotemplate:metadata:labels:name: deamonset-demospec:containers:- image: nginx:latestname: deamonset-demo

[root@k8s-master01 5]# kubectl apply -f 8.ds.yaml 
daemonset.apps/deamonset-demo created
[root@k8s-master01 5]# kubectl get pod -o wide
NAME                   READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
deamonset-demo-n7ggm   1/1     Running   0          26s   10.244.85.239   k8s-node01   <none>           <none>
deamonset-demo-r5c5z   1/1     Running   0          26s   10.244.58.238   k8s-node02   <none>           <none>

[root@k8s-master01 5]# curl 10.244.85.239
Welcome to Nginx V1.0 !!!

结果:DaemonSet资源管理器创建成功。可以发现在node01和node02两个节点上分别有一个pod。

注意:DaemonSet资源清单中不需要设置副本数量,因为DaemonSet本身会根据node节点数量进行自动化调度控制部署pod,且每个节点有且仅有一个pod。


http://www.ppmy.cn/devtools/156258.html

相关文章

如何使用 DeepSeek 和 Dexscreener 构建免费的 AI 加密交易机器人?

我使用DeepSeek AI和Dexscreener API构建的一个简单的 AI 加密交易机器人实现了这一目标。在本文中&#xff0c;我将逐步指导您如何构建像我一样的机器人。 DeepSeek 最近发布了R1&#xff0c;这是一种先进的 AI 模型。您可以将其视为 ChatGPT 的免费开源版本&#xff0c;但增加…

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》051-案例:教务系统学生列表页面

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

[leetcode·回溯算法]回溯算法解题套路框架

本文参考labuladong算法笔记[回溯算法解题套路框架 | labuladong 的算法笔记] 本文解决几个问题&#xff1a; 回溯算法是什么&#xff1f;解决回溯算法相关的问题有什么技巧&#xff1f;如何学习回溯算法&#xff1f;回溯算法代码是否有规律可循&#xff1f; 其实回溯算法和我…

最新版Node.js下载安装指定版本图文版教程(非常详细)

文字目录 1、什么是Node.js&#xff1f;2、什么是 npm&#xff1f;3、下载Node.js安装包4、详细安装步骤 1、什么是Node.js&#xff1f; Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它使 JavaScript 可以在服务器端运行。在 Node.js 出现之前&#…

【C++】Lambda表达式

目录 一、Lambda表达式基础1.1 核心概念1.2 基础语法 二、捕获列表详解2.1 捕获方式对比2.2 捕获示例 三、参数与返回类型3.1 参数传递3.2 返回类型推导 四、高级特性与应用4.1 立即执行Lambda4.2 泛型Lambda&#xff08;C14&#xff09;4.3 捕获表达式&#xff08;C14&#xf…

从理论到实践:Linux 进程替换与 exec 系列函数

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 在Linux中&#xff0c;进程替换&#xff08;Process Substitution&#xff09;是一个非常强大的特性&#xff0c;它允许将一个进程的输出直接当作一个文件来处理。这种技术通常用于Shell脚本和命令行操作中…

Vue.js 新的生命周期钩子:`onMounted`, `onUpdated` 等

Vue.js 新的生命周期钩子&#xff1a;onMounted, onUpdated 等 今天我们来聊聊 Vue 3 中的生命周期钩子&#xff0c;特别是 onMounted、onUpdated 等。如果你对如何在 Vue 3 的组合式 API&#xff08;Composition API&#xff09;中使用这些钩子感到困惑&#xff0c;那么这篇文…