Kubernetes的pod控制器之DaemonSet

DaemonSet 顶级参数介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@master manifests]#  kubectl explain ds
KIND:     DaemonSet
VERSION:  extensions/v1beta1
 
DESCRIPTION:
     DEPRECATED - This group version of DaemonSet is deprecated by
     apps/v1beta2/DaemonSet. See the release notes for more information.
     DaemonSet represents the configuration of a daemon set.
 
FIELDS:
   apiVersion   <string>
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#resources
 
   kind <string>
     Kind is a string value representing the REST resource this object
     represents. Servers may infer this from the endpoint the client submits
     requests to. Cannot be updated. In CamelCase. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
 
   metadata <Object>  元数据
     Standard object's metadata. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
 
   spec <Object>  期望状态
     The desired behavior of this daemon set. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
 
   status   <Object>
     The current status of this daemon set. This data may be out of date by some
     window of time. Populated by the system. Read-only. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

  控制spec的参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[root@master manifests]#  kubectl explain ds.spec
KIND:     DaemonSet
VERSION:  extensions/v1beta1
 
RESOURCE: spec <Object>
 
DESCRIPTION:
     The desired behavior of this daemon set. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
 
     DaemonSetSpec is the specification of a daemon set.
 
FIELDS:
   minReadySeconds  <integer>  启动后等待多久应用可以就绪
     The minimum number of seconds for which a newly created DaemonSet pod
     should be ready without any of its container crashing, for it to be
     considered available. Defaults to 0 (pod will be considered available as
     soon as it is ready).
 
   revisionHistoryLimit <integer> 保留的历史版本
     The number of old history to retain to allow rollback. This is a pointer to
     distinguish between explicit zero and not specified. Defaults to 10.
 
   selector <Object>
     A label query over pods that are managed by the daemon set. Must match in
     order to be controlled. If empty, defaulted to labels on Pod template. More
     info:
     https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
 
   template <Object> -required-
     An object that describes the pod that will be created. The DaemonSet will
     create exactly one copy of this pod on every node that matches the
     template's node selector (or on every node if no node selector is
     specified). More info:
     https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
 
   templateGeneration   <integer>
     DEPRECATED. A sequence number representing a specific generation of the
     template. Populated by the system. It can be set only during the creation.
 
   updateStrategy   <Object> 更新策略
     An update strategy to replace existing DaemonSet pods with new pods.

  创建DaemonSet 控制器模板

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[root@master manifests]# cat ds-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
   name: redis
   namespace: default
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: redis
  strategy:
    rollingUpdate:
      maxSurge: 2
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:4.0-alpine
        ports:
        - name: redis
          containerPort: 6379
---
apiVersion: apps/v1
kind: DaemonSet
metadata:  元数据
  name: myapp-ds
  namespace: default
spec:  控制器期望状态
  revisionHistoryLimit: 5 保留历史版本的个数
  selector:  定义标签选择器
    matchLabels:  标签选择器
      app: myapp-ds  选定的标签
      cx: ds
  updateStrategy:  更新策略
    rollingUpdate: 
      maxUnavailable: 1
    type: RollingUpdate
  template:  pod 的定义
    metadata:  pod 元数据定义
      labels:   定义标签
        app: myapp-ds 
        cx: ds
      name: myapp-ds  pod的名字
      namespace: default  pod 名称空间
    spec:   pod 期望状态定义
      containers:  pod 里容器的定义
      - name: filebea   容器名字
        image: ikubernetes/filebeat:5.6.5-alpine  容器镜像的定义
        env:  环境变量定义
        - name: REDIS_HOST
          value: redis.default.svc.cluster.local
        - name: REDIS_LOG_LEVEL
          value: info

       运行pod

1
2
3
[root@master manifests]# kubectl  apply -f ds-demo.yaml
deployment.apps/redis unchanged
daemonset.apps/myapp-ds configured

  查看创建的pod

1
2
3
4
5
[root@master manifests]# kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
myapp-ds-b5hsx             1/1     Running   0          50s
myapp-ds-m7pss             1/1     Running   0          47s
redis-54f5db865-hcdwd      1/1     Running   0          17m

  查看pod运行日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@master manifests]# kubectl logs myapp-ds-m7pss
2019/08/11 16:12:21.734552 beat.go:297: INFO Home path: [/usr/local/bin] Config path: [/usr/local/bin] Data path: [/usr/local/bin/data] Logs path: [/usr/local/bin/logs]
2019/08/11 16:12:21.734604 beat.go:192: INFO Setup Beat: filebeat; Version: 5.6.5
2019/08/11 16:12:21.734771 metrics.go:23: INFO Metrics logging every 30s
2019/08/11 16:12:21.734940 redis.go:140: INFO Max Retries set to: 3
2019/08/11 16:12:21.734961 outputs.go:108: INFO Activated redis as output plugin.
2019/08/11 16:12:21.735038 publish.go:300: INFO Publisher name: myapp-ds-m7pss
2019/08/11 16:12:21.735169 async.go:63: INFO Flush Interval set to: 1s
2019/08/11 16:12:21.735178 async.go:64: INFO Max Bulk Size set to: 2048
2019/08/11 16:12:21.735332 modules.go:95: ERR Not loading modules. Module directory not found: /usr/local/bin/module
2019/08/11 16:12:21.735534 beat.go:233: INFO filebeat start running.
2019/08/11 16:12:21.735704 registrar.go:68: INFO No registry file found under: /var/log/containers/filebeat_registry. Creating a new registry file.
2019/08/11 16:12:21.736963 registrar.go:106: INFO Loading registrar data from /var/log/containers/filebeat_registry
2019/08/11 16:12:21.737003 registrar.go:123: INFO States Loaded from registrar: 0
2019/08/11 16:12:21.737028 crawler.go:38: INFO Loading Prospectors: 1
2019/08/11 16:12:21.737153 prospector_log.go:65: INFO Prospector with previous states loaded: 0
2019/08/11 16:12:21.737408 config.go:95: WARN DEPRECATED: document_type is deprecated. Use fields instead.
2019/08/11 16:12:21.737430 prospector.go:124: INFO Starting prospector of type: log; id: 11998382299604891537
2019/08/11 16:12:21.737438 crawler.go:58: INFO Loading and starting Prospectors completed. Enabled prospectors: 1
2019/08/11 16:12:21.737451 registrar.go:236: INFO Starting Registrar
2019/08/11 16:12:21.737470 sync.go:41: INFO Start sending events to output
2019/08/11 16:12:21.737498 spooler.go:63: INFO Starting spooler: spool_size: 2048; idle_timeout: 5s
2019/08/11 16:12:51.735339 metrics.go:39: INFO Non-zero metrics in the last 30s: registrar.writes=1
2019/08/11 16:13:21.736172 metrics.go:34: INFO No non-zero metrics in the last 30s
2019/08/11 16:13:51.735741 metrics.go:34: INFO No non-zero metrics in the last 30s
2019/08/11 16:14:21.736297 metrics.go:34: INFO No non-zero metrics in the last 30s
2019/08/11 16:14:51.736150 metrics.go:34: INFO No non-zero metrics in the last 30s
2019/08/11 16:15:21.735939 metrics.go:34: INFO No non-zero metrics in the last 30s

  进入一个pod里面

1
2
[root@master manifests]# kubectl exec -it myapp-ds-m7pss -- /bin/sh
/ #

   

手动创建server

1
[root@master manifests]# kubectl expose deploy redis --port=6379

  查看创建的server

1
2
3
4
5
6
[root@master manifests]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        17d
myapp        NodePort    10.103.191.244   <none>        80:31339/TCP   17d
nginx        ClusterIP   10.108.177.175   <none>        80/TCP         17d
redis        ClusterIP   10.104.114.16    <none>        6379/TCP       8m41s

  

posted @   烟雨楼台,行云流水  阅读(455)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示