• 五、搭建kube-dns


    1. 简介

      kube-dns用来为kubernetes service分配子域名,在集群中可以通过名称访问service。通常kube-dns会为service赋予一个名为“service名称.namespace.svc.cluster.local”的A记录,用来解析service的cluster ip。

    2.修改Node配置文件

    2.1 修改kubelet配置文件

    vim /etc/kubernetes/kubelet

    KUBELET_ADDRESS="--address=0.0.0.0"
    #KUBELET_HOSTNAME="--hostname-override=127.0.0.1"
    KUBELET_HOSTNAME="--hostname-override=k8s-node-1"
    KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"
    KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
    KUBELET_ARGS="--cluster-dns=172.16.1.100 --cluster-domain=cluster.local. --allow-privileged=true"    #设置dns ip
    

    2.2 重启kubelet服务

    systemctl restart kubelet.service

    3.创建kube-dns所需配置文件

    3.1 创建kube-dns-rc文件

    vim kube-dns-rc.yaml

    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: kube-dns-v20
      namespace: kube-system
      labels:
        k8s-app: kube-dns
        version: v20
        kubernetes.io/cluster-service: "true"
    spec:
      replicas: 1
      selector:
        k8s-app: kube-dns
        version: v20
      template:
        metadata:
          labels:
            k8s-app: kube-dns
            version: v20
          annotations:
            scheduler.alpha.kubernetes.io/critical-pod: ''
            scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
        spec:
          containers:
          - name: kubedns
            image: gcr.io/google_containers/kubedns-amd64:1.8
            imagePullPolicy: IfNotPresent
            resources:
              limits:
                memory: 170Mi
              requests:
                cpu: 100m
                memory: 70Mi
            livenessProbe:
              httpGet:
                path: /healthz-kubedns
                port: 8080
                scheme: HTTP
              initialDelaySeconds: 60
              timeoutSeconds: 5
              successThreshold: 1
              failureThreshold: 5
            readinessProbe:
              httpGet:
                path: /readiness
                port: 8081
                scheme: HTTP
              initialDelaySeconds: 3
              timeoutSeconds: 5
            args:
            - --domain=cluster.local. 
            - --dns-port=10053
            - --kube-master-url=http://10.0.251.148:8080
            ports:
            - containerPort: 10053
              name: dns-local
              protocol: UDP
            - containerPort: 10053
              name: dns-tcp-local
              protocol: TCP
          - name: dnsmasq
            image: gcr.io/google_containers/kube-dnsmasq-amd64:1.4.1
            imagePullPolicy: IfNotPresent
            livenessProbe:
              httpGet:
                path: /healthz-dnsmasq
                port: 8080
                scheme: HTTP
              initialDelaySeconds: 60
              timeoutSeconds: 5
              successThreshold: 1
              failureThreshold: 5
            args:
            - --cache-size=1000
            - --no-resolv
            - --server=127.0.0.1#10053
            - --log-facility=-
            ports:
            - containerPort: 53
              name: dns
              protocol: UDP
            - containerPort: 53
              name: dns-tcp
              protocol: TCP
          - name: healthz
            image: gcr.io/google_containers/exechealthz-amd64:1.2
            imagePullPolicy: IfNotPresent
            resources:
              limits:
                memory: 50Mi
              requests:
                cpu: 10m
                memory: 50Mi
            args:
            - --cmd=nslookup kubernetes.default.svc.cluster.local. 127.0.0.1 >/dev/null
            - --url=/healthz-dnsmasq
            - --cmd=nslookup kubernetes.default.svc.cluster.local. 127.0.0.1:10053 >/dev/null
            - --url=/healthz-kubedns
            - --port=8080
            - --quiet
            ports:
            - containerPort: 8080
              protocol: TCP
          dnsPolicy: Default 
    

      此rc配置文件需要确定的是Kubernetes Master地址填写正确,以及image可以正常pull使用。

    3.2 创建kube-dns-svc.yaml

    vim kube-dns-svc.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: kube-dns
      namespace: kube-system
      labels:
        k8s-app: kube-dns
        kubernetes.io/cluster-service: "true"
        kubernetes.io/name: "KubeDNS"
    spec:
      selector:
        k8s-app: kube-dns
      clusterIP: 172.16.1.100    #设置dns服务地址
      ports:
      - name: dns
        port: 53
        protocol: UDP
      - name: dns-tcp
        port: 53
        protocol: TCP
    

    3.3 下载docker镜像

    docker pull gcr.io/google_containers/kubedns-amd64:1.8
    docker pull gcr.io/google_containers/kube-dnsmasq-amd64:1.4.1
    docker pull gcr.io/google_containers/exechealthz-amd64:1.2
      在所有Node上准备好所需镜像,可以提升Kubernetes创建Pod的速度。

    3.4 启动RC和SVC

    kubectl create -f kube-dns-rc.yaml
    kubectl create -f kube-dns-svc.yaml

    3.5 验证dns-pod启动是否成功

    kubectl get -o wide
    &验证kube-dns pod启动没问题后,kube-dns及可使用。至此Kubernetes环境构建完成,可以先上使用,接下来就需要我们自己编写配置文件了。

  • 相关阅读:
    no-return-assign (Rules) – Eslint 中文开发手册
    CSS 字体图标
    CSS 元素的显示与隐藏
    CSS 定位
    CSS 清除浮动
    CSS 浮动
    java 运算符
    Java 初识
    CSS3 完善盒模型
    CSS 盒子模型
  • 原文地址:https://www.cnblogs.com/Cherry-Linux/p/7841550.html
Copyright © 2020-2023  润新知