Kubernetes Daemonset 暴露端口到主机

8 阅读1分钟

概述

该文档记录将Daemonset资源暴露端口到宿主机时操作的注意事项,基于1.26版本

操作

  1. daemonset yaml中指定需要暴露的端口,containerport为容器服务端口,hostport为宿主机端口,两个端口号必须要保持一致
ports:
  - name: http
    containerPort: 9256
    hostPort: 9256
    protocol: TCP
  1. 要开启 hostNetwork 功能,让 POD 能够使用宿主机的网络,这个配置与 containers 配置同级
hostNetwork: true

示例

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app.kubernetes.io/instance: process-exporter-gray
    env: gray
    name: process-exporter
  name: process-exporter
  namespace: gray
spec:
  minReadySeconds: 10
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      env: gray
      name: process-exporter
  template:
    metadata:
      creationTimestamp: null
      labels:
        env: gray
        name: process-exporter
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: cronjob
                    operator: In
                    values:
                      - 'true'
      containers:
        - env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            - name: POD_IP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.podIP
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: spec.nodeName
          image: >-
            test/process-exporter:v0.8.2
          imagePullPolicy: Always
          name: process-exporter
          ports:
            - containerPort: 9256
              hostPort: 9256
              name: http
              protocol: TCP
          resources:
            limits:
              cpu: '1'
              memory: 2Gi
            requests:
              cpu: 200m
              memory: 1Gi
          securityContext:
            capabilities:
              add:
                - SYS_PTRACE
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
            - mountPath: /host/proc
              name: proc
              readOnly: true
            - mountPath: /app/conf
              name: process-exporter-config
      dnsPolicy: ClusterFirst
      hostNetwork: true
      imagePullSecrets:
        - name: gray-reg-secret
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      tolerations:
        - effect: NoSchedule
          key: cronjob
          operator: Equal
          value: 'true'
      volumes:
        - hostPath:
            path: /proc
            type: ''
          name: proc
        - configMap:
            defaultMode: 420
            name: process-exporter-configmap
          name: process-exporter-config