• 基于kubernetes实现coredns的及验证


    CoreDNS:  k8s内部的DNS ,用于对podservice做记录的,好让其他的pod做访问

    这里不用做过多的阐述

    官方kube-dns现在已经没有在维护了,从Kubernetes 1.11开始,可使用CoreDNS作为Kubernetes的DNS插件进入GA状态,Kubernetes推荐使用CoreDNS作为集群内的DNS服务。 CoreDNS从2017年初就成为了CNCF的的孵化项目,CoreDNS的特点就是十分灵活和可扩展的插件机制,各种插件实现

    vim coredns.yaml

    apiVersion: v1

    kind: ServiceAccount

    metadata:

      name: coredns

      namespace: kube-system

      labels:

          kubernetes.io/cluster-service: "true"

          addonmanager.kubernetes.io/mode: Reconcile

    ---

    apiVersion: rbac.authorization.k8s.io/v1

    kind: ClusterRole

    metadata:

      labels:

        kubernetes.io/bootstrapping: rbac-defaults

        addonmanager.kubernetes.io/mode: Reconcile

      name: system:coredns

    rules:

    - apiGroups:

      - ""

      resources:

      - endpoints

      - services

      - pods

      - namespaces

      verbs:

      - list

      - watch

    ---

    apiVersion: rbac.authorization.k8s.io/v1

    kind: ClusterRoleBinding

    metadata:

      annotations:

        rbac.authorization.kubernetes.io/autoupdate: "true"

      labels:

        kubernetes.io/bootstrapping: rbac-defaults

        addonmanager.kubernetes.io/mode: EnsureExists

      name: system:coredns

    roleRef:

      apiGroup: rbac.authorization.k8s.io

      kind: ClusterRole

      name: system:coredns

    subjects:

    - kind: ServiceAccount

      name: coredns

      namespace: kube-system

    ---

    apiVersion: v1

    kind: ConfigMap

    metadata:

      name: coredns

      namespace: kube-system

      labels:

          addonmanager.kubernetes.io/mode: EnsureExists

    data:

      Corefile: |

        .:53 {

            errors

            health

            kubernetes cluster.local in-addr.arpa ip6.arpa {

                pods insecure

                upstream

                fallthrough in-addr.arpa ip6.arpa

            }

            prometheus :9153

            proxy . /etc/resolv.conf

            cache 30

            loop

            reload

            loadbalance

        }

    ---

    apiVersion: extensions/v1beta1

    kind: Deployment

    metadata:

      name: coredns

      namespace: kube-system

      labels:

        k8s-app: kube-dns

        kubernetes.io/cluster-service: "true"

        addonmanager.kubernetes.io/mode: Reconcile

        kubernetes.io/name: "CoreDNS"

    spec:

      # replicas: not specified here:

      # 1. In order to make Addon Manager do not reconcile this replicas parameter.

      # 2. Default is 1.

      # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.

      strategy:

        type: RollingUpdate

        rollingUpdate:

          maxUnavailable: 1

      selector:

        matchLabels:

          k8s-app: kube-dns

      template:

        metadata:

          labels:

            k8s-app: kube-dns

          annotations:

            seccomp.security.alpha.kubernetes.io/pod: 'docker/default'

        spec:

          serviceAccountName: coredns

          tolerations:

            - key: node-role.kubernetes.io/master

              effect: NoSchedule

            - key: "CriticalAddonsOnly"

              operator: "Exists"

          containers:

          - name: coredns

            image: coredns/coredns:1.2.2

            imagePullPolicy: IfNotPresent

            resources:

              limits:

                memory: 170Mi

              requests:

                cpu: 100m

                memory: 70Mi

            args: [ "-conf", "/etc/coredns/Corefile" ]

            volumeMounts:

            - name: config-volume

              mountPath: /etc/coredns

              readOnly: true

            ports:

            - containerPort: 53

              name: dns

              protocol: UDP

            - containerPort: 53

              name: dns-tcp

              protocol: TCP

            - containerPort: 9153

              name: metrics

              protocol: TCP

            livenessProbe:

              httpGet:

                path: /health

                port: 8080

                scheme: HTTP

              initialDelaySeconds: 60

              timeoutSeconds: 5

              successThreshold: 1

              failureThreshold: 5

            securityContext:

              allowPrivilegeEscalation: false

              capabilities:

                add:

                - NET_BIND_SERVICE

                drop:

                - all

              readOnlyRootFilesystem: true

          dnsPolicy: Default

          volumes:

            - name: config-volume

              configMap:

                name: coredns

                items:

                - key: Corefile

                  path: Corefile

    ---

    apiVersion: v1

    kind: Service

    metadata:

      name: kube-dns

      namespace: kube-system

      annotations:

        prometheus.io/port: "9153"

        prometheus.io/scrape: "true"

      labels:

        k8s-app: kube-dns

        kubernetes.io/cluster-service: "true"

        addonmanager.kubernetes.io/mode: Reconcile

        kubernetes.io/name: "CoreDNS"

    spec:

      selector:

        k8s-app: kube-dns

      clusterIP: 10.0.0.2

      ports:

      - name: dns

        port: 53

        protocol: UDP

      - name: dns-tcp

        port: 53

        protocol: TCP

     [root@k8s-master ~]# kubectl create -f coredns.yaml

    [root@k8s-master ~]# kubectl get pod,svc,deployment,rc -n kube-system

    NAME                           READY   STATUS    RESTARTS   AGE

    pod/coredns-5d7754fbcb-hm6vq   1/1     Running   0          3m36s

    NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE

    service/kube-dns   ClusterIP   10.0.0.2     <none>        53/UDP,53/TCP   97s

    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE

    deployment.extensions/coredns   1/1     1            1           3m36s

     

  • 相关阅读:
    关于ORA-04091异常的出现原因,以及解决方案
    <Interview problem>二进制加法
    Hadoop日志文件分析系统
    Android studio安装
    weex环境配置
    weex构建项目
    参数保存
    下拉搜索的小白demo
    angularJs中$http获取后台数据实例(搜集到的)
    前后台对接angularjs(搜集的)
  • 原文地址:https://www.cnblogs.com/zc1741845455/p/11296149.html
Copyright © 2020-2023  润新知