日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【好文收藏】K8S集群部署CoreDNS服务

發布時間:2025/1/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【好文收藏】K8S集群部署CoreDNS服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

K8S集群部署CoreDNS服務

k8s集群中的應用通常是通過ingress實現微服務發布的,前文介紹過在K8S集群中使用traefik實現服務的自動發布,其實現方式是traefik通過集群的DNS服務來解析service對應的集群地址(clusterip),從而將用戶的訪問請求轉發到集群地址上。因此,在部署完集群后的第一件事情應該是配置DNS服務,目前可選的方案有skydns, kube-dns, coredns。

kube-dns是Kubernetes中的一個內置插件,目前作為一個獨立的開源項目維護,見https://github.com/kubernetes/dns。該DNS服務器利用SkyDNS的庫來為Kubernetes pod和服務提供DNS請求。

CoreDNS項目是SkyDNS2的作者,Miek Gieben采用更模塊化,可擴展的框架構建,將此DNS服務器作為Kube-DNS的替代品。CoreDNS作為CNCF中的托管的一個項目,在Kuberentes1.9版本中,使用kubeadm方式安裝的集群可以通過以下命令直接安裝CoreDNS。
kubeadm init --feature-gates=CoreDNS=true。
本文將介紹coredns的配置

關于在1.5.2 rpm集群版本上配置skydns服務請參考:
https://blog.51cto.com/ylw6006/2067923

關于traefik實現微服務發布請參考:
https://blog.51cto.com/ylw6006/2072667
https://blog.51cto.com/ylw6006/2073718

關于kube-dns的詳細介紹可以參考大牛博客:
https://jimmysong.io/posts/configuring-kubernetes-kube-dns/

一、準備yaml配置文件
1、coredns-sa.yaml文件,創建ServiceAccount

# cat coredns-sa.yaml apiVersion: v1 kind: ServiceAccount metadata:name: corednsnamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcile

2、coredns-rbac.yaml文件,創建rbac ClusterRole和ClusterRoleBinding

# cat coredns-rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata:labels:kubernetes.io/bootstrapping: rbac-defaultsaddonmanager.kubernetes.io/mode: Reconcilename: system:coredns rules: - apiGroups:- ""resources:- endpoints- services- pods- namespacesverbs:- list- watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"labels:kubernetes.io/bootstrapping: rbac-defaultsaddonmanager.kubernetes.io/mode: EnsureExistsname: system:coredns roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: system:coredns subjects: - kind: ServiceAccountname: corednsnamespace: kube-system

3、coredns-configmap.yaml文件,定義Corefile配置文件的參數配置

# cat coredns-configmap.yaml apiVersion: v1 kind: ConfigMap metadata:name: corednsnamespace: kube-system data:Corefile: |.:53 {errorsloghealthkubernetes cluster.local 10.254.0.0/18proxy . /etc/resolv.confcache 30}

4、coredns-deployment.yaml文件,定義pod的創建模板

# cat coredns-deployment.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata:name: corednsnamespace: kube-systemlabels:k8s-app: corednskubernetes.io/cluster-service: "true"kubernetes.io/name: "CoreDNS" spec:replicas: 1selector:matchLabels:k8s-app: corednstemplate:metadata:labels:k8s-app: corednsannotations:scheduler.alpha.kubernetes.io/critical-pod: ''scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'spec:serviceAccountName: corednscontainers:- name: corednsimage: coredns/coredns:latestimagePullPolicy: Alwaysargs: [ "-conf", "/etc/coredns/Corefile" ]volumeMounts:- name: config-volumemountPath: /etc/corednsports:- containerPort: 53name: dnsprotocol: UDP- containerPort: 53name: dns-tcpprotocol: TCPlivenessProbe:httpGet:path: /healthport: 8080scheme: HTTPinitialDelaySeconds: 60timeoutSeconds: 5successThreshold: 1failureThreshold: 5dnsPolicy: Defaultvolumes:- name: config-volumeconfigMap:name: corednsitems:- key: Corefilepath: Corefile

5、 coredns-service.yaml文件,定義服務的名稱

# cat coredns-service.yaml apiVersion: v1 kind: Service metadata:name: corednsnamespace: kube-systemlabels:k8s-app: corednskubernetes.io/cluster-service: "true"kubernetes.io/name: "CoreDNS" spec:selector:k8s-app: corednsclusterIP: 10.254.0.2ports:- name: dnsport: 53protocol: UDP- name: dns-tcpport: 53 protocol: TCP

二、通過yaml配置文件創建coredns

# kubectl get node # kubectl get pod,svc,deployment,rc # kubectl get pod,svc,deployment,rc -n kube-system # cd yaml/coredns/ # ls -l # kubectl create -f .

# kubectl get pod,svc,deployment,rc -n kube-system


三、創建一個nginx服務用于測試

# kubectl create -f . # kubectl get pod,svc,deployment,rc # kubectl run -i --tty busybox --image=registry.59iedu.com/busybox /bin/sh

參考鏈接:

https://blog.51cto.com/ylw6006/2108426

總結

以上是生活随笔為你收集整理的【好文收藏】K8S集群部署CoreDNS服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。