Kubernetes DNS的配置

 Kubernetes集群机制通过DNS进行服务名和ip的映射,如果没有配置dns,你可以通过下面命令查询到集群ip

kubectl get svc --namespace=kube-system

得到结果

 

但Cluster-ip是变化的,如果通过一个create命令一次批量建立一堆具有相互依赖关系的Pod或者RC,就需要配置DNS

配置DNS的方式有几种,我这里试通了最简单的一种SkyDNS的配置.

skydns-rc.yml

 

apiVersion: v1
kind: ReplicationController
metadata:
  name: kube-dns-v11
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    version: v11
    kubernetes.io/cluster-service: "true"
spec:
  replicas: 1
  selector:
    k8s-app: kube-dns
    version: v11
  template:
    metadata:
      labels:
        k8s-app: kube-dns
        version: v11
        kubernetes.io/cluster-service: "true"
    spec:
      containers:
      - name: etcd
        image: gcr.io/google_containers/etcd-amd64:2.2.1
        resources:
          limits:
            cpu: 100m
            memory: 500Mi
          requests:
            cpu: 100m
            memory: 50Mi
        command:
        - /usr/local/bin/etcd
        - -data-dir
        - /var/etcd/data
        - -listen-client-urls
        - http://127.0.0.1:2379,http://127.0.0.1:4001
        - -advertise-client-urls
        - http://127.0.0.1:2379,http://127.0.0.1:4001
        - -initial-cluster-token
        - skydns-etcd
        #volumeMounts:
        #- name: etcd-storage
        #  mountPath: /var/etcd/data
      - name: kube2sky
        - --domain=cluster.local
        - --kube-master-url=http://192.168.0.105:8080
        resources:
          limits:
            cpu: 100m
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 50Mi
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 60
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        readinessProbe:
          httpGet:
            path: /readiness
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
        args:
        - --domain=cluster.local
      - name: skydns
        image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c
        resources:
          limits:
            cpu: 100m
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 50Mi
        args:
        - -machines=http://127.0.0.1:4001
        - -addr=0.0.0.0:53
        - -ns-rotate=false
        - -domain=cluster.local.
        ports:
        - containerPort: 53
          name: dns
          protocol: UDP
        - containerPort: 53
          name: dns-tcp
          protocol: TCP
      - name: healthz
        image: gcr.io/google_containers/exechealthz:1.0
        resources:
          limits:
            cpu: 10m
            memory: 20Mi
          requests:
            cpu: 10m
            memory: 20Mi
        args:
        - -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null
        - -port=8080
        ports:
        - containerPort: 8080
          protocol: TCP
      #volumes:
      #- name: etcd-storage
      #  emptyDir: {}
      dnsPolicy: Default

注意这里有个配置是指向你的api server

kube-master-url=http://192.168.0.105:8080

 

skydns-svc.yml

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:  10.254.254.254
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP

 

先去minion节点上下载所需要的images

docker pull gcr.io/google_containers/etcd-amd64:2.2.1
docker pull gcr.io/google_containers/skydns:2015-10-13-8c72f8c
docker pull gcr.io/google_containers/exechealthz:1.0

 

然后运行构建

kubectl create -f skydns-rc.yml
kubectl create -f skydns-svc.yml

 

最后看到Pods处于Running状态

 

 查看日志需要通过-c指定container name

[root@k8s-master skydns]# kubectl get pods --namespace=kube-system
NAME                 READY     STATUS    RESTARTS   AGE
kube-dns-v11-x0vr3   4/4       Running   20         1d
[root@k8s-master skydns]# kubectl logs kube-dns-v11-x0vr3 -n kube-system
Error from server (BadRequest): a container name must be specified for pod kube-dns-v11-x0vr3, choose one of: [etcd kube2sky skydns healthz]
[root@k8s-master skydns]# kubectl logs kube-dns-v11-x0vr3 -n kube-system -c etcd
2017-05-24 00:06:03.899264 I | etcdmain: etcd Version: 2.2.1
2017-05-24 00:06:03.899305 I | etcdmain: Git SHA: 75f8282
2017-05-24 00:06:03.899310 I | etcdmain: Go Version: go1.5.1
2017-05-24 00:06:03.899314 I | etcdmain: Go OS/Arch: linux/amd64
2017-05-24 00:06:03.899319 I | etcdmain: setting maximum number of CPUs to 1, total number of available CPUs is 1
2017-05-24 00:06:03.900546 I | etcdmain: listening for peers on http://localhost:2380
2017-05-24 00:06:03.900607 I | etcdmain: listening for peers on http://localhost:7001
2017-05-24 00:06:03.900626 I | etcdmain: listening for client requests on http://127.0.0.1:2379
2017-05-24 00:06:03.900640 I | etcdmain: listening for client requests on http://127.0.0.1:4001
2017-05-24 00:06:03.950602 I | etcdserver: name = default
2017-05-24 00:06:03.950621 I | etcdserver: data dir = /var/etcd/data
2017-05-24 00:06:03.950627 I | etcdserver: member dir = /var/etcd/data/member
2017-05-24 00:06:03.950630 I | etcdserver: heartbeat = 100ms
2017-05-24 00:06:03.950633 I | etcdserver: election = 1000ms
2017-05-24 00:06:03.950637 I | etcdserver: snapshot count = 10000
2017-05-24 00:06:03.950649 I | etcdserver: advertise client URLs = http://127.0.0.1:2379,http://127.0.0.1:4001
2017-05-24 00:06:03.950655 I | etcdserver: initial advertise peer URLs = http://localhost:2380,http://localhost:7001
2017-05-24 00:06:03.950665 I | etcdserver: initial cluster = default=http://localhost:2380,default=http://localhost:7001
2017-05-24 00:06:03.984118 I | etcdserver: starting member 6a5871dbdd12c17c in cluster f68652439e3f8f2a
2017-05-24 00:06:03.984177 I | raft: 6a5871dbdd12c17c became follower at term 0
2017-05-24 00:06:03.984194 I | raft: newRaft 6a5871dbdd12c17c [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2017-05-24 00:06:03.984198 I | raft: 6a5871dbdd12c17c became follower at term 1
2017-05-24 00:06:03.984315 I | etcdserver: starting server... [version: 2.2.1, cluster version: to_be_decided]
2017-05-24 00:06:03.997533 N | etcdserver: added local member 6a5871dbdd12c17c [http://localhost:2380 http://localhost:7001] to cluster f68652439e3f8f2a
2017-05-24 00:06:04.785143 I | raft: 6a5871dbdd12c17c is starting a new election at term 1
2017-05-24 00:06:04.785217 I | raft: 6a5871dbdd12c17c became candidate at term 2
2017-05-24 00:06:04.785224 I | raft: 6a5871dbdd12c17c received vote from 6a5871dbdd12c17c at term 2
2017-05-24 00:06:04.785245 I | raft: 6a5871dbdd12c17c became leader at term 2
2017-05-24 00:06:04.785253 I | raft: raft.node: 6a5871dbdd12c17c elected leader 6a5871dbdd12c17c at term 2
2017-05-24 00:06:04.785631 I | etcdserver: setting up the initial cluster version to 2.2
2017-05-24 00:06:04.785697 I | etcdserver: published {Name:default ClientURLs:[http://127.0.0.1:2379 http://127.0.0.1:4001]} to cluster f68652439e3f8f2a
2017-05-24 00:06:04.839450 N | etcdserver: set the initial cluster version to 2.2
[root@k8s-master skydns]# 

 

好,dns配置完成!

posted @ 2017-05-24 08:36  ericnie  阅读(9574)  评论(0编辑  收藏  举报