k 8 s-DNSドメイン名サービス
先にインストールしたk 8 sクラスタ環境でDNSドメイン名解析サービスを引き続き追加
Kubernetesが提供するDNSは、1.etcd:DNSストレージ2.kube 2 sky:kubernetes masterのservice(サービス)をetcd 3.skyDNSに登録する:DNSドメイン名解析サービスを提供するこの3つのコンポーネントをpodで起動および実行する
コンポーネントミラーetcd,kube 2 sky,skydns,exechealthzを追加
docker pull docker.gaoxiaobang.com/kubernetes/etcd-amd64:2.2.1
docker pull docker.gaoxiaobang.com/kubernetes/kube2sky:1.14
docker pull docker.gaoxiaobang.com/kubernetes/skydns:2015-10-13-8c72f8c
docker pull docker.gaoxiaobang.com/kubernetes/exechealthz:1.0
docker tag docker.gaoxiaobang.com/kubernetes/skydns:2015-10-13-8c72f8c 192.168.1.5:5000/skydns:2015-10-13-8c72f8c
docker tag docker.gaoxiaobang.com/kubernetes/kube2sky:1.14 192.168.1.5:5000/kube2sky:1.14
docker tag docker.gaoxiaobang.com/kubernetes/etcd-amd64:2.2.1 192.168.1.5:5000/etcd-amd64:2.2.1
docker tag docker.gaoxiaobang.com/kubernetes/exechealthz:1.0 192.168.1.5:5000/exechealthz:1.0
docker push 192.168.1.5:5000/skydns:2015-10-13-8c72f8c
docker push 192.168.1.5:5000/kube2sky:1.14
docker push 192.168.1.5:5000/etcd-amd64:2.2.1
docker push 192.168.1.5:5000/exechealthz:1.0
docker pull busybox #コマンドツールとして使用
docker tag docker.io/busybox 192.168.1.5:5000/busybox
docker push 192.168.1.5:5000/busybox
yamlファイル、skydns-rc.yaml、skydns-svc.yaml、busybox.yamlの作成
cd/home/dns
==============================================================================
vi skydns-rc.yaml
以下の内容を修正することに注意してください.
1、対応する4つのミラーアドレス
image: 192.168.1.5:5000/etcd-amd64:2.2.1
image: 192.168.1.5:5000/kube2sky:1.14
image: 192.168.1.5:5000/skydns:2015-10-13-8c72f8c
image: 192.168.1.5:5000/exechealthz:1.0
2,masterとdomainアドレス
- --kube-master-url=http://192.168.1.5:8080 #クラスタマスターのアクセスアドレス
- --domain=atomic.io #flannelネットワーク定義domain
3,namespaceの定義
namespace: default
args:
- -cmd=nslookup kubernetes.default.svc.atomic.io 127.0.0.1 >/dev/null #注意namespaceとflannelネットワーク名
4,skydnsの起動パラメータ-addr=0.0.0.0:53は、ネイティブTCPとUDPの53ポートを使用してサービスを提供することを示す
5,ミラーサービスの127.0.0.1アドレスは勝手に変更しないで、原状を維持して、1つのpod内の異なるdns応用サービスの呼び出しアドレスが一致することを保証します
6、ディレクトリマウントは一貫した対応を保つ
- -data-dir
-/var/etcd/data
volumeMounts:
- mountPath:/var/etcd/data
=============================================================================
vi skydns-svc.yaml
この書類に注意しなければならないのは
clusterIP: 10.254.10.20
このIPは/etc/kubernetes/kubeletで定義されています.
KUBELET_ARGS="--cluster-dns=10.254.10.20 --cluster-domain=atomic.io"
各nodeの/etc/kubernetes/kubelet起動パラメータ--cluster_dns=10.254.10.20 dnsサービスのclusterIP--cluster_domain=atomic.io dnsサービスに設定されたドメイン名
パラメータが一致しない場合は変更してkubeletを再起動します
vi busybox.yaml
ファイルを作成したら、コマンドで作成を実行します.
kubectl create -f skydns-rc.yaml
kubectl create -f skydns-svc.yaml
kubectl create -f busybox.yaml
kubectl get pods --all-namespaces -o wide
dns検出コマンドの実行(busyboxはコマンドツール)
[root@k8s-master dns]# kubectl exec busybox -- nslookup kubernetes
Server: 10.254.10.20
Address 1: 10.254.10.20
Name: kubernetes
Address 1: 10.254.0.1
サービスがカスタムネーミングスペースに属している場合は、サービス検索時にnamespaceの名前を付ける必要があります.
[root@k8s-master dns]# kubectl exec busybox -- nslookup kubernetes-dashboard.kube-system
Server: 10.254.10.20
Address 1: 10.254.10.20
Name: kubernetes-dashboard.kube-system
Address 1: 10.254.132.77
コマンドでsvcを表示して、対応する下のドメイン名の解析は正しいです
[root@k8s-master dns]# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kube-dns 10.254.10.20 53/UDP,53/TCP 5h k8s-app=kube-dns
default kubernetes 10.254.0.1 443/TCP 8d
kube-system heapster 10.254.189.98 80/TCP 12h k8s-app=heapster
kube-system kubernetes-dashboard 10.254.132.77 80:30699/TCP 12h app=kubernetes-dashboard
kube-system monitoring-grafana 10.254.178.155 80/TCP 12h k8s-app=grafana
kube-system monitoring-influxdb 10.254.59.144 8086/TCP 12h k8s-app=influxdb
Kubernetesが提供するDNSは、1.etcd:DNSストレージ2.kube 2 sky:kubernetes masterのservice(サービス)をetcd 3.skyDNSに登録する:DNSドメイン名解析サービスを提供するこの3つのコンポーネントをpodで起動および実行する
コンポーネントミラーetcd,kube 2 sky,skydns,exechealthzを追加
docker pull docker.gaoxiaobang.com/kubernetes/etcd-amd64:2.2.1
docker pull docker.gaoxiaobang.com/kubernetes/kube2sky:1.14
docker pull docker.gaoxiaobang.com/kubernetes/skydns:2015-10-13-8c72f8c
docker pull docker.gaoxiaobang.com/kubernetes/exechealthz:1.0
docker tag docker.gaoxiaobang.com/kubernetes/skydns:2015-10-13-8c72f8c 192.168.1.5:5000/skydns:2015-10-13-8c72f8c
docker tag docker.gaoxiaobang.com/kubernetes/kube2sky:1.14 192.168.1.5:5000/kube2sky:1.14
docker tag docker.gaoxiaobang.com/kubernetes/etcd-amd64:2.2.1 192.168.1.5:5000/etcd-amd64:2.2.1
docker tag docker.gaoxiaobang.com/kubernetes/exechealthz:1.0 192.168.1.5:5000/exechealthz:1.0
docker push 192.168.1.5:5000/skydns:2015-10-13-8c72f8c
docker push 192.168.1.5:5000/kube2sky:1.14
docker push 192.168.1.5:5000/etcd-amd64:2.2.1
docker push 192.168.1.5:5000/exechealthz:1.0
docker pull busybox #コマンドツールとして使用
docker tag docker.io/busybox 192.168.1.5:5000/busybox
docker push 192.168.1.5:5000/busybox
yamlファイル、skydns-rc.yaml、skydns-svc.yaml、busybox.yamlの作成
cd/home/dns
==============================================================================
vi skydns-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: kube-dns-v9
namespace: default
labels:
k8s-app: kube-dns
version: v9
kubernetes.io/cluster-service: "true"
spec:
replicas: 1
selector:
k8s-app: kube-dns
version: v9
template:
metadata:
labels:
k8s-app: kube-dns
version: v9
kubernetes.io/cluster-service: "true"
spec:
containers:
- name: etcd
image: 192.168.1.5:5000/etcd-amd64:2.2.1
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 100m
memory: 50Mi
command:
- /usr/local/bin/etcd
# - --privileged=true
- -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:
- mountPath: /var/etcd/data
name: etcd-storage
- name: kube2sky
#image: gcr.io/google_containers/kube2sky:1.11
image: 192.168.1.5:5000/kube2sky:1.14
imagePullPolicy: IfNotPresent
resources:
limits:
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: 8081
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
args:
# command = "/kube2sky"
# - -etcd-server=http://127.0.0.1:4001
#- -kube_master_url=http://172.27.8.210:8080
- --kube-master-url=http://192.168.1.5:8080
- --domain=atomic.io
- name: skydns
#image: gcr.io/google_containers/skydns:2015-03-11-001
image: 192.168.1.5:5000/skydns:2015-10-13-8c72f8c
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 100m
memory: 50Mi
args:
# command = "/skydns"
- -machines=http://127.0.0.1:2379
- -addr=0.0.0.0:53
- -ns-rotate=false
- -domain=atomic.io
ports:
- containerPort: 53
name: dns
protocol: UDP
- containerPort: 53
name: dns-tcp
protocol: TCP
livenessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 1
timeoutSeconds: 5
- name: healthz
#image: gcr.io/google_containers/exechealthz:1.0
image: 192.168.1.5:5000/exechealthz:1.0
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 10m
memory: 20Mi
args:
- -cmd=nslookup kubernetes.default.svc.atomic.io 127.0.0.1 >/dev/null
- -port=8080
ports:
- containerPort: 8080
protocol: TCP
volumes:
- name: etcd-storage
emptyDir: {}
dnsPolicy: Default
以下の内容を修正することに注意してください.
1、対応する4つのミラーアドレス
image: 192.168.1.5:5000/etcd-amd64:2.2.1
image: 192.168.1.5:5000/kube2sky:1.14
image: 192.168.1.5:5000/skydns:2015-10-13-8c72f8c
image: 192.168.1.5:5000/exechealthz:1.0
2,masterとdomainアドレス
- --kube-master-url=http://192.168.1.5:8080 #クラスタマスターのアクセスアドレス
- --domain=atomic.io #flannelネットワーク定義domain
3,namespaceの定義
namespace: default
args:
- -cmd=nslookup kubernetes.default.svc.atomic.io 127.0.0.1 >/dev/null #注意namespaceとflannelネットワーク名
4,skydnsの起動パラメータ-addr=0.0.0.0:53は、ネイティブTCPとUDPの53ポートを使用してサービスを提供することを示す
5,ミラーサービスの127.0.0.1アドレスは勝手に変更しないで、原状を維持して、1つのpod内の異なるdns応用サービスの呼び出しアドレスが一致することを保証します
6、ディレクトリマウントは一貫した対応を保つ
- -data-dir
-/var/etcd/data
volumeMounts:
- mountPath:/var/etcd/data
=============================================================================
vi skydns-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: kube-dns
namespace: default
labels:
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
kubernetes.io/name: "KubeDNS"
spec:
selector:
k8s-app: kube-dns
clusterIP: 10.254.10.20
ports:
- name: dns
port: 53
protocol: UDP
- name: dns-tcp
port: 53
protocol: TCP
この書類に注意しなければならないのは
clusterIP: 10.254.10.20
このIPは/etc/kubernetes/kubeletで定義されています.
KUBELET_ARGS="--cluster-dns=10.254.10.20 --cluster-domain=atomic.io"
各nodeの/etc/kubernetes/kubelet起動パラメータ--cluster_dns=10.254.10.20 dnsサービスのclusterIP--cluster_domain=atomic.io dnsサービスに設定されたドメイン名
パラメータが一致しない場合は変更してkubeletを再起動します
vi busybox.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: 192.168.1.5:5000/busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
ファイルを作成したら、コマンドで作成を実行します.
kubectl create -f skydns-rc.yaml
kubectl create -f skydns-svc.yaml
kubectl create -f busybox.yaml
kubectl get pods --all-namespaces -o wide
[root@k8s-master dns]# kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default busybox 1/1 Running 5 5h 172.17.85.4 k8s-node-1
default kube-dns-v9-hnp4m 4/4 Running 0 5h 172.17.32.5 192.168.1.5
kube-system heapster-3919175978-gd82j 1/1 Running 0 12h 172.17.85.3 k8s-node-1
kube-system kubernetes-dashboard-3155532917-wdq38 1/1 Running 0 12h 172.17.85.2 k8s-node-1
kube-system monitoring-grafana-3994812335-wv9dh 1/1 Running 0 12h 172.17.32.2 192.168.1.5
kube-system monitoring-influxdb-265709471-xv170 1/1 Running 0 12h 172.17.32.3 192.168.1.5
dns検出コマンドの実行(busyboxはコマンドツール)
[root@k8s-master dns]# kubectl exec busybox -- nslookup kubernetes
Server: 10.254.10.20
Address 1: 10.254.10.20
Name: kubernetes
Address 1: 10.254.0.1
サービスがカスタムネーミングスペースに属している場合は、サービス検索時にnamespaceの名前を付ける必要があります.
[root@k8s-master dns]# kubectl exec busybox -- nslookup kubernetes-dashboard.kube-system
Server: 10.254.10.20
Address 1: 10.254.10.20
Name: kubernetes-dashboard.kube-system
Address 1: 10.254.132.77
コマンドでsvcを表示して、対応する下のドメイン名の解析は正しいです
[root@k8s-master dns]# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kube-dns 10.254.10.20 53/UDP,53/TCP 5h k8s-app=kube-dns
default kubernetes 10.254.0.1 443/TCP 8d
kube-system heapster 10.254.189.98 80/TCP 12h k8s-app=heapster
kube-system kubernetes-dashboard 10.254.132.77 80:30699/TCP 12h app=kubernetes-dashboard
kube-system monitoring-grafana 10.254.178.155 80/TCP 12h k8s-app=grafana
kube-system monitoring-influxdb 10.254.59.144 8086/TCP 12h k8s-app=influxdb