zoukankan      html  css  js  c++  java
  • 我是这样部署coredns的

    操作环境

    k8s-master
    k8s-node1
    k8s-node2

    下载coredns

    cd /opt/k8s/coredns
    git clone https://github.com/coredns/deployment.git
    mv deployment coredns

    配置coredns

    cd /opt/k8s/coredns/coredns/kubernetes
    ./deploy.sh 10.0.0.0/24 cluster.local
    这里,10.0.0.0/24是你的service网段, cluster.local是域名后缀。该命令输出的内容保存为文件generatedCoredns.yaml.

    启动coredns

    kubectl create -f generatedCoredns.yaml
    如果报错:Get "https://10.0.0.1:443/api/v1/endpoints?limit=500&resourceVersion=0": x509: certificate is valid for 127.0.0.1, 172.x.x.x, not 10.0.0.1,那么Coredns是默认kubernetes的API-Server是10.0.0.1:443,需要修改上面的generatedCoredns.yaml文件。添加如下的KUBERNETES_SERVICE_HOST、KUBERNETES_SERVICE_PORT和KUBERNETES_SERVICE_PORT_HTTPS三个coredns容器的环境变量,使之指向你的apiserver IP和端口。

          containers:
          - name: coredns
            image: coredns/coredns:1.7.0
            imagePullPolicy: IfNotPresent
            env:
              - name: KUBERNETES_SERVICE_HOST
                value: "172.171.19.210"
              - name: KUBERNETES_SERVICE_PORT
                value: "6443"
              - name: KUBERNETES_SERVICE_PORT_HTTPS
                value: "6443"
    

    查看创建结果类似如下:

    # kubectl get all -n kube-system -l k8s-app=kube-dns
    NAME                           READY   STATUS    RESTARTS   AGE
    pod/coredns-76ff9d9d89-2lzml   1/1     Running   0          3h47m
    
    NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
    service/kube-dns   ClusterIP   10.0.0.2     <none>        53/UDP,53/TCP,9153/TCP   3h47m
    
    NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/coredns   1/1     1            1           3h47m
    
    NAME                                 DESIRED   CURRENT   READY   AGE
    replicaset.apps/coredns-76ff9d9d89   1         1         1       3h47m
    

    显示所有的容器都是Running并且READY的个数都是“1/1”,如果不是这样需要查看log并根据具体情况进行修复。

    验证

    本coredns要能解析本机上所有的service的域名,也就是能解析kubernetes.default.svc.cluster.local和nginx-service.test.svc.nginx-service

    kubectl get svc -o wide --all-namespaces

    NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
    default kubernetes ClusterIP 10.0.0.1 443/TCP 85d
    test nginx-service ClusterIP 10.0.0.100 80:32460/TCP 47h app=nginx

    在两个计算节点上去nslookup kubernetes.default.svc.cluster.local 可以得到预期的结果,解析出了地址10.0.0.1,如果不支持nslookup可以直接ping改域名.
    如果想在pod里面能解析域名,需要修改kubelet的配置文件,加上一句--cluster-dns=10.0.0.2 --cluster-domain=cluster.local :

    --cluster-dns=10.0.0.2 --cluster-domain=cluster.local 
    --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d 
    

    然后重启kubelet.尝试在pod中ping 这几个service的域名可以通。

    参考文档

  • 相关阅读:
    Kafka0.10.2.0分布式集群安装
    Windows下本机简易监控系统搭建(Telegraf+Influxdb+Grafana)
    Influxdb1.2.2安装
    Grafana4.2安装
    Zookeeper3.4.9分布式集群安装
    Grafana中多租户设置
    Grafana关键表结构分析
    Spark2.1.0分布式集群安装
    Hadoop2.7.3分布式集群安装
    JVM学习--(七)性能监控工具
  • 原文地址:https://www.cnblogs.com/janeysj/p/13826919.html
Copyright © 2011-2022 走看看