Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Put attached files - Corefile and zone.db in /dockerdata-nfs using root user.

    Code Block
    ubuntu@coredns-1:/dockerdata-nfs$ ls -lrt
    total 44
    -rw-r--r-- 1 root root  1366 Mar  1 15:00 Corefile
    -rw-r--r-- 1 root root   979 Mar  5 14:06 zone.db
    ubuntu@coredns-1:/dockerdata-nfs$
    
    
  2. Edit coredns configmap to reflect the new zone file.

    Code Block
    #Below command opens the codedns configmap for editing. Edit and save the file.
    
    ubuntu@coredns-1:~# kubectl edit configmap coredns -n kube-system
    # Please edit the object below. Lines beginning with a '#' will be ignored,
    # and an empty file will abort the edit. If an error occurs while saving this file will be
    # reopened with the relevant failures.
    #
    apiVersion: v1
    data:
      Corefile: |
        .:53 {
            errors
            log
            health
            kubernetes cluster.local 10.96.0.0/12 {
               pods insecure
            }
            file /dockerdata-nfs/zone.db example.com
            prometheus
            proxy . /etc/resolv.conf
            cache 30
        }
      zone.db: "$ORIGIN example.com.     ; designates the start of this zone file in the
        namespace\n$TTL 1h         ; default expiration time of all resource records without
        their own TTL value\nexample.com.  IN  SOA   ns.example.com. username.example.com.
        ( 2007120710 1d 2h 4w 1h )\nexample.com.  IN  NS    ns                    ; ns.example.com
        is a nameserver for example.com\nexample.com.  IN  NS    ns.somewhere.example.
        ; ns.somewhere.example is a backup nameserver for example.com\nexample.com.  IN
        \ A     10.147.101.135             ; IPv4 address for example.com\nns            IN
        \ A     10.247.5.11             ; IPv4 address for ns.example.com\nwww           IN
        \ CNAME example.com.          ; www.example.com is an alias for example.com\nwwwtest
        \      IN  CNAME www              ; wwwtest.example.com is another alias for www.example.com\nsdnc.example.com.
        \   IN      SRV    30202 10 10 example.com.\n;;site1\n;;sdncnsdnc         IN  A  10.147.99.140\n;;site2\nsdnc\t\t
        IN A   10.147.101.23"
    kind: ConfigMap
    metadata:
      creationTimestamp: 2018-02-28T20:13:03Z
      name: coredns
      namespace: kube-system
      resourceVersion: "102077"
      selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
      uid: c8489771-1cc3-11e8-a0cb-fa163eabcb60
     
    configmap "coredns" edited
    ubuntu@coredns-1:~#

    Following changes are applied:

    WhereAdded Line

    Corefile: |

    .:53{

    ...

    }

    file /dockerdata-nfs/zone.db example.com
    #Before line:
    kind: ConfigMap


    #Note that IP addresses in "A record" should point to your current active site's master node. #Only one of the site's "A record" should be uncommented at a time.
    example.com.  IN   A   <fed-vm master ip address>
    ns            IN   A   <nameserver on fed VM as configured originally in /etc/resolv.conf>
    sdnc        IN  A  <site1<active site's master IP>              //Add Active Site IP to direct traffic pointed to.

     zone.db: "$ORIGIN example.com.     ; designates the start of this zone file in the
    namespace\n$TTL 1h ; default expiration time of all resource records without
    their own TTL value\nexample.com. IN SOA ns.example.com. username.example.com.
    ( 2007120710 1d 2h 4w 1h )\nexample.com. IN NS ns ; ns.example.com
    is a nameserver for example.com\nexample.com. IN NS ns.somewhere.example.
    ; ns.somewhere.example is a backup nameserver for example.com\nexample.com. IN
    \ A 10.147.101.135 ; IPv4 address for example.com\nns IN
    \ A 10.247.5.11 ; IPv4 address for ns.example.com\nwww IN
    \ CNAME example.com. ; www.example.com is an alias for example.com\nwwwtest
    \ IN CNAME www ; wwwtest.example.com is another alias for www.example.com\nsdnc.example.com.
    \ IN SRV 30202 10 10 example.com.\nsdnc IN A 10.147.99.140"
    Note

    The files in step 1 should contain the same entries of coredns configmap, described in step 2. If the files in step 1, are pointing traffic to site1 site IP1 (for example), the codedns configmap in step 2, should also configure site1 ( and comment out site2)site IP1.

  3. Edit coredns deployment to specify mount volumes and zone key for coredns.

    Code Block
    ubuntu@coredns-1:~# kubectl -n kube-system edit deployment coredns
    deployment "coredns" edited
    ubuntu@coredns-1:~#
    Make the following changes
    PurposeChanges


    mount point for new zone file

    mount point for new coredns config file

    define new zone key in volumes

    FieldAdded/Replaced Value

    .spec.template.spec.containers.volumeMounts



    .spec.template.spec.containers.args

    Replaced Values:

    - mountPath: /dockerdata-nfs
    name: config-volume


    - conf

    - /dockerdata-nfs/Corefile

     .spec.template.spec.volumes.items

    Added Values:

    - key: zone.db
    path: zone.db

    Deployment config will look as in file coredns-edit-deploymnt.yaml after making athe bove changes.
    Note that editing the deployment will create a new coredns pod and terminate the old one. Verify the new pod is up and running after editing deployment.

    Code Block
    ubuntu@coredns-1:/root$ kubectl get pods --all-namespaces --context=kubernetes-admin-host | grep coredns
    kube-system         coredns-789ff8fd8d-2gxnc                        1/1       Running   0          5d
    ubuntu@coredns-1:/root$
  4. Edit /etc/resolv.conf to point nameserver to configured coreDNS server.

    Code Block
    ubuntu@coredns-1:~# kubectl get svc --all-namespaces | grep kube-dns
    kube-system         kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP   5d
     
    #Use the above cluster IP to configure in /etc/resolv.conf as shown below
    ubuntu@coredns-1:/root$ sudo vi /etc/resolv.conf
    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 10.96.0.10
    #nameserver 10.247.5.11
    search openstacklocal
    ubuntu@coredns-1:
     
  5.  Lookup the configured domain to verify it is pointing to site as configured above.

    Code Block
    ubuntu@coredns-1:/dockerdata-nfs$ nslookup sdnc.example.com
    Server:         10.96.0.10
    Address:        10.96.0.10#53
    Name:   sdnc.example.com
    Address: 10.147.101.23
     
    #verify it is resolving sites like google.ca backwardly
    ubuntu@coredns-1:/dockerdata-nfs$ nslookup google.ca
    Server:         10.96.0.10
    Address:        10.96.0.10#53
    Non-authoritative answer:
    Name:   google.ca
    Address: 172.217.23.131