zoukankan      html  css  js  c++  java
  • 基于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

     

  • 相关阅读:
    用鼠标键盘来控制你的Android手机——同屏显示简单教程
    Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例
    eclipse在Ubuntu 13.04下的安装过程及问题小记
    Ubuntu下安装qq方法及疑难问题解决
    POJ1065 Wooden Sticks(贪心+动态规划——单调递减或递增序列)
    简单的字母全排列问题—递归法和STL法
    ichat在线客服jQuery插件(可能是历史上最灵活的)
    轻量级实用JQuery表单验证插件:validateForm5
    一句话在网页右上角加一个精致下拉框:forkme on github
    FastUI快速界面原型制作工具
  • 原文地址:https://www.cnblogs.com/zc1741845455/p/11296149.html
Copyright © 2011-2022 走看看