deployment 单独对pod中设置dns

1.因为一个项目需要用到内网dns,而其他项目只能用阿里云的nds,所以就需要单独对pod设置dns,这个是智搜项目

Pod的DNS策略:

    DNS 策略可以逐个 Pod 来设定。目前 Kubernetes 支持以下特定 Pod 的 DNS 策略。 这些策略可以在 Pod 规约中的 dnsPolicy 字段设置。

Default:

    Pod 从运行所在的节点继承名称解析配置。

ClusterFirst:

    与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都将转发到从节点继承的上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。

ClusterFirstWithHostNet:

    对于以 hostNetwork 方式运行的 Pod,应显式设置其 DNS 策略 ClusterFirstWithHostNet。

None:

    此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 dnsConfig 字段 所提供的 DNS 设置。

示例:

apiVersion: v1
kind: Pod
metadata:
name: alpine
namespace: default
spec:
containers:

  • image: alpine
    command:
    • sleep
    • “10000”
      imagePullPolicy: Always
      name: alpine
      dnsPolicy: None # 忽略k8s的dns设置,使用自定义设置
      dnsConfig:
      nameservers:
    • 114.114.114.114 # DNS地址,不能光设置个地址,后面的search也要带上
    • 223.5.5.5
      searches:
    • default.svc.cluster.local
    • svc.cluster.local
    • cluster.local
      options:
    • name: ndots # 域名中包含点的个数比配置的ndots小就会追加search中的后缀来查找
      value: “5”
      2.实际应用
apiVersion: apps/v1
kind: Deployment  
metadata:  
  name: @APP_NAME@
  labels:  
    app: @APP_NAME@
spec:  
  replicas: @REPLICAS@
  revisionHistoryLimit: 10
  selector:  
    matchLabels:  
      app: @APP_NAME@
  template:  
    metadata:  
      labels:  
        app: @APP_NAME@
        armsPilotAutoEnable: "on"
        armsPilotCreateAppName: @APP_NAME@
        one-agent.jdk.version: "OpenJDK11"
    spec:
      dnsPolicy: None
      dnsConfig:
        nameservers:
        - 10.33.2.5
        searches:
        - default.svc.cluster.local
        - svc.cluster.local
        - cluster.local
        options:
        - name: ndots
          value: "5"  
      imagePullSecrets:  
      - name: osale-secret  
      containers:  
      - name: @APP_NAME@
        image: ${IMAGE}
        ports:  
        - containerPort: @targetPort@
          protocol: TCP  
        imagePullPolicy: IfNotPresent
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        livenessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 15
          periodSeconds: 20
        resources:
          limits:
            cpu: @LIMIT_CPU@
            memory: @LIMIT_MEMORY@
          requests:
            cpu: @REQUEST_CPU@
            memory: @REQUEST_MEMORY@
        volumeMounts:
          - name: logs
            mountPath: /gemdale/logs
          - name: data
            mountPath: /gemdata/share/
      volumes:
        - name: logs
          hostPath:
            type: DirectoryOrCreate 
            path: /data/logs/pre/@APP_NAME@ 
        - name: data
          hostPath:
            type: DirectoryOrCreate 
            path: /gemdata/share/
 
---  
apiVersion: v1  
kind: Service  
metadata:  
  name: @APP_NAME@
  labels:  
    app: @APP_NAME@
spec:  
  ports:  
    - port: @port@
      targetPort: @targetPort@
      @NodePort@
  selector:  
    app: @APP_NAME@
  type: @PORT_TYPE@  

你可能感兴趣的:(kubernetes,容器,云原生)