Kubernetes-dnsサービス構築
6846 ワード
DNSサービスは独立したシステムサービスではなくaddonであり、プラグインとしてインストールされており、kubernetesクラスタでは必要ありません(ただしインストールは非常に推奨されています).クラスタ上で動作するアプリケーションと見なすことができるが,このアプリケーションは比較的特殊であるにすぎない.
DNSには、1.3より前にetcd+kube 2 sky+skydns、1.3より後にkubedns+dnsmasqの2つの構成がある.
最初のステップは、すべてのnodeノードに次の構成を追加します.
インストール前の準備
k 8 s-dnsのダウンロードに必要なyamlドキュメントgithubのダウンロードパス:
dnsサービスの準備には3つのimagesが必要です
プロファイルの変更 imagesミラーを上のプライベートウェアハウスミラーに変更します. は、 は、 はkubednsというミラーの下のargsにおいて kubernetesのバージョンが1.5.2であるためvolumesのパラメータは無効です.
k 8 s-dnsクラスタの作成
クラスタノードが正常に構成されているかどうかを確認
kubernetes dnsが使用可能であることを確認します
既存のサービスを表示し、解析できるかどうかをテストします.
その配置にかかわらず、kubernetesが対外的に提供するDNSサービスは一致している.各サービスには対応するDNSレコードがあり、kubernetesはDNSレコードのフォーマットを以下のように保存します.
..svc.各セクションのフィールドの意味:
service_name:サービス名は、サービスを定義するときに付けた名前namespace:サービスが存在するnamespaceの名前domain:デフォルトのcluster.localなどのドメイン名接尾辞です.
リファレンスドキュメント
DNS Pods and Serviceskubernetes概要:kube-dnsとサービス発見配置kubernetes dnsサービス配置kubernetes dnsサービスkubernetesの使用4-kube-dnsk 8 sクラスタをインストールするkubernetes-dashboardとkube-dnsコンポーネント配置インストールサービス発見メカニズムとCluster DNSのインストール(CA認証版なし)serviceaccount/token:no such file or directory
エラーの要約
エラー1:ヒントVolumeエラー
エラー原因
誤報2
エラーの原因は、k 8 s-dnsがセキュリティメカニズムを有効にする必要があるためです.
master-apiserverプロファイルに上記の行を追加します.ただし、サーバがCA認証メカニズムを起動していることに相当します.必要に応じて、記事クラスタCA署名に基づくセキュリティ設定を参照してください
方法2:master-apiの位置を手動で指定し、kubednsというミラーの下のargsに
転載先:https://www.cnblogs.com/biglittleant/p/7463535.html
DNSには、1.3より前にetcd+kube 2 sky+skydns、1.3より後にkubedns+dnsmasqの2つの構成がある.
最初のステップは、すべてのnodeノードに次の構成を追加します.
vi /etc/kubernetes/kubelet
KUBELET_ARGS="--cluster_dns=10.254.0.10 --cluster_domain=cluster.local"
systemctl restart kubelet kube-proxy
インストール前の準備
k 8 s-dnsのダウンロードに必要なyamlドキュメントgithubのダウンロードパス:
kubernetes/cluster/addons/dns/
kubedns-svc.yaml.sed
kubedns-controller.yaml.sed
kubedns-cm.yaml
kubedns-sa.yaml
dnsサービスの準備には3つのimagesが必要です
docker save gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4 >dns.tar
docker save gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4 >dnsmasq.tar
docker save gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4 >sidecar.tar
docker load < dns.tar
docker load < dnsmasq.tar
docker load < sidecar.tar
docker tag gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4 harbor.biglittleant.cn/udoctor/k8s-dns-kube-dns-amd64:1.14.4
docker push harbor.biglittleant.cn/udoctor/k8s-dns-kube-dns-amd64:1.14.4
docker tag gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4 harbor.biglittleant.cn/udoctor/k8s-dns-dnsmasq-nanny-amd64:1.14.4
docker push harbor.biglittleant.cn/udoctor/k8s-dns-dnsmasq-nanny-amd64:1.14.4
docker tag gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4 harbor.biglittleant.cn/udoctor/k8s-dns-sidecar-amd64:1.14.4
docker push harbor.biglittleant.cn/udoctor/k8s-dns-sidecar-amd64:1.14.4
プロファイルの変更
kubedns-controller.yaml
の$DNS_DOMAIN
をcluster.local
に置き換える.kubedns-controller.yaml
の$DNS_SERVER_IP
を10.254.0.10
に置き換える.このIPはあなたのクラスタに構成されたIPセグメントと同じです.- --kube-master-url=http://192.168.56.12:8080
増加した.# tolerations:
# - key: "CriticalAddonsOnly"
# operator: "Exists"
# volumes:
# - name: kube-dns-config
# configMap:
# name: kube-dns
# optional: true
# volumeMounts:
# - name: kube-dns-config
# mountPath: /kube-dns-config
# volumeMounts:
# - name: kube-dns-config
# mountPath: /etc/k8s/dns/dnsmasq-nanny
CLUSTER-IP
このIPはあなたのクラスタ構成のIPです.kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 443/TCP 3d
k 8 s-dnsクラスタの作成
kubectl create -f sa/kubedns-sa.yaml
kubectl create -f sa/kubedns-cm.yaml
kubectl create -f sa/kubedns-controller.yaml
kubectl create -f sa/kubedns-svc.yaml
クラスタノードが正常に構成されているかどうかを確認
kubectl get pods --namespace=kube-system
NAME READY STATUS RESTARTS AGE
kube-dns-3132964191-xh7fh 3/3 Running 0 4h
kubernetes dnsが使用可能であることを確認します
busybox.yaml
ファイルを作成し、解析が正常かどうかを確認するために起動します.apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
kubectl create -f busybox.yaml
既存のサービスを表示し、解析できるかどうかをテストします.
kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 443/TCP 3d
kubectl exec -it busybox sh
kubectl exec -it busybox sh
/ # nslookup kubernetes
Server: 10.254.0.10
Address 1: 10.254.0.10 kube-dns.kube-system.svc.cluster.local
Name: kubernetes
Address 1: 10.254.0.1 kubernetes.default.svc.cluster.local
その配置にかかわらず、kubernetesが対外的に提供するDNSサービスは一致している.各サービスには対応するDNSレコードがあり、kubernetesはDNSレコードのフォーマットを以下のように保存します.
..svc.各セクションのフィールドの意味:
service_name:サービス名は、サービスを定義するときに付けた名前namespace:サービスが存在するnamespaceの名前domain:デフォルトのcluster.localなどのドメイン名接尾辞です.
リファレンスドキュメント
DNS Pods and Serviceskubernetes概要:kube-dnsとサービス発見配置kubernetes dnsサービス配置kubernetes dnsサービスkubernetesの使用4-kube-dnsk 8 sクラスタをインストールするkubernetes-dashboardとkube-dnsコンポーネント配置インストールサービス発見メカニズムとCluster DNSのインストール(CA認証版なし)serviceaccount/token:no such file or directory
エラーの要約
エラー1:ヒントVolumeエラー
error: error validating "sa/kubedns-controller.yaml": error validating data: [found invalid field tolerations for v1.PodSpec, found invalid field optional for v1.ConfigMapVolumeSource]; if you choose to ignore these errors, turn validation off with --validate=false
エラー原因
v1.ConfigMapVolumeSource kubernetes 1.6 ,yum 1.5.2 。
vim kubedns-controller.yaml
この書類は全部で3か所編集されています# tolerations:
# - key: "CriticalAddonsOnly"
# operator: "Exists"
# volumes:
# - name: kube-dns-config
# configMap:
# name: kube-dns
# optional: true
# volumeMounts:
# - name: kube-dns-config
# mountPath: /kube-dns-config
# volumeMounts:
# - name: kube-dns-config
# mountPath: /etc/k8s/dns/dnsmasq-nanny
誤報2
CrashLoopBackOff Failed to create a kubernetes client: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory
エラーの原因は、k 8 s-dnsがセキュリティメカニズムを有効にする必要があるためです.
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
master-apiserverプロファイルに上記の行を追加します.ただし、サーバがCA認証メカニズムを起動していることに相当します.必要に応じて、記事クラスタCA署名に基づくセキュリティ設定を参照してください
方法2:master-apiの位置を手動で指定し、kubednsというミラーの下のargsに
- --kube-master-url=http://10.10.0.183:8080
を追加します.再作成します.vim kubedns-controller.yaml
containers:
- name: kubedns
image: harbor.cloudh.net.cn/udoctor/k8s-dns-kube-dns-amd64:1.14.4
args:
- --domain=cluster.local.
- --dns-port=10053
- --config-dir=/kube-dns-config
- --v=2
- --kube-master-url=http://10.10.0.183:8080
転載先:https://www.cnblogs.com/biglittleant/p/7463535.html