真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

K8S運維技巧--DNS部分;-創(chuàng)新互聯(lián)

一.自定義dns ;

創(chuàng)新互聯(lián)是專業(yè)的皮山網(wǎng)站建設(shè)公司,皮山接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行皮山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!1.介紹; 2.怎樣獲取dns?名字; 3.支持的?DNS?模式; 4.自定義dns;

1.介紹

Kubernetes DNS 在群集上調(diào)度 DNS Pod 和服務(wù),并配置 kubelet 以告知各個容器使用 DNS 服務(wù)的 IP 來解析 DNS 名稱。

2.怎樣獲取 DNS 名字;

在集群中定義的每個 Service(包括 DNS 服務(wù)器自身)都會被指派一個 DNS 名稱。 默認(rèn),一個客戶端 Pod 的 DNS 搜索列表將包含該 Pod 自己的 Namespace 和集群默認(rèn)域。 通過如下示例可以很好地說明:

假設(shè)在 Kubernetes 集群的 Namespace?bar?中,定義了一個Service?foo。 運行在Namespace?bar?中的一個 Pod,可以簡單地通過 DNS 查詢?foo?來找到該 Service。 運行在 Namespace?quux?中的一個 Pod 可以通過 DNS 查詢?foo.bar?找到該 Service。

以下各節(jié)詳細(xì)介紹了受支持的記錄類型和支持的布局。 其中代碼部分的布局,名稱或查詢命令均被視為實現(xiàn)細(xì)節(jié),如有更改,恕不另行通知。 有關(guān)最新規(guī)范請查看?Kubernetes 基于 DNS 的服務(wù)發(fā)現(xiàn).

3.支持的 DNS 模式

下面各段詳細(xì)說明支持的記錄類型和布局。 如果任何其它的布局、名稱或查詢,碰巧也能夠使用,這就需要研究下它們的實現(xiàn)細(xì)節(jié),以免后續(xù)修改它們又不能使用了。

Service

A 記錄

“正?!?Service(除了 Headless Service)會以?my-svc.my-namespace.svc.cluster-domain.example?這種名字的形式被指派一個 DNS A 記錄。 這會解析成該 Service 的 Cluster IP。

“Headless” Service(沒有Cluster IP)也會以?my-svc.my-namespace.svc.cluster-domain.example?這種名字的形式被指派一個 DNS A 記錄。 不像正常 Service,它會解析成該 Service 選擇的一組 Pod 的 IP。 希望客戶端能夠使用這一組 IP,否則就使用標(biāo)準(zhǔn)的 round-robin 策略從這一組 IP 中進(jìn)行選擇。

SRV 記錄

命名端口需要創(chuàng)建 SRV 記錄,這些端口是正常 Service或?Headless Services?的一部分。 對每個命名端口,SRV 記錄具有?_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster-domain.example?這種形式。 對普通 Service,這會被解析成端口號和 CNAME:my-svc.my-namespace.svc.cluster-domain.example。 對 Headless Service,這會被解析成多個結(jié)果,Service 對應(yīng)的每個 backend Pod 各一個, 包含?auto-generated-name.my-svc.my-namespace.svc.cluster-domain.example?這種形式 Pod 的端口號和 CNAME。

Pods

Pod的 hostname 和 subdomain 字段

當(dāng)前,創(chuàng)建 Pod 后,它的主機名是該 Pod 的?metadata.name?值。

在 v1.2 版本中,用戶可以配置 Pod annotation, 通過?pod.beta.kubernetes.io/hostname?來設(shè)置 Pod 的主機名。 如果為 Pod 配置了 annotation,會優(yōu)先使用 Pod 的名稱作為主機名。 例如,給定一個 Pod,它具有 annotation?pod.beta.kubernetes.io/hostname: my-pod-name,該 Pod 的主機名被設(shè)置為 “my-pod-name”。

在 v1.3 版本中,PodSpec 具有?hostname?字段,可以用來指定 Pod 的主機名。這個字段的值優(yōu)先于 annotation?pod.beta.kubernetes.io/hostname。 在 v1.2 版本中引入了 beta 特性,用戶可以為 Pod 指定 annotation,其中?pod.beta.kubernetes.io/subdomain?指定了 Pod 的子域名。 最終的域名將是 “...svc.”。 舉個例子,Pod 的主機名 annotation 設(shè)置為 “foo”,子域名 annotation 設(shè)置為 “bar”,在 Namespace “my-namespace” 中對應(yīng)的 FQDN 為 “foo.bar.my-namespace.svc.cluster.local”。

在 v1.3 版本中,PodSpec 具有?subdomain?字段,可以用來指定 Pod 的子域名。 這個字段的值優(yōu)先于 annotation?pod.beta.kubernetes.io/subdomain?的值。

4.Pod 的 DNS 設(shè)定

Pod 的 DNS 配置可讓用戶對 Pod 的 DNS 設(shè)置進(jìn)行更多控制。

dnsConfig?字段是可選的,它可以與任何?dnsPolicy?設(shè)置一起使用。 但是,當(dāng) Pod 的?dnsPolicy?設(shè)置為 “None” 時,必須指定?dnsConfig?字段。

用戶可以在?dnsConfig?字段中指定以下屬性:

  • nameservers: 將用作于 Pod 的 DNS 服務(wù)器的 IP 地址列表。最多可以指定3個 IP 地址。 當(dāng) Pod 的?dnsPolicy?設(shè)置為 “None” 時,列表必須至少包含一個IP地址,否則此屬性是可選的。列出的服務(wù)器將合并到從指定的 DNS 策略生成的基本名稱服務(wù)器,并刪除重復(fù)的地址。

  • searches: 用于在 Pod 中查找主機名的 DNS 搜索域的列表。此屬性是可選的。指定后,提供的列表將合并到根據(jù)所選 DNS 策略生成的基本搜索域名中。 重復(fù)的域名將被刪除。 ?? Kubernetes最多允許6個搜索域。

  • options: 對象的可選列表,其中每個對象可能具有?name?屬性(必需)和?value?屬性(可選)。 此屬性中的內(nèi)容將合并到從指定的 DNS 策略生成的選項。 重復(fù)的條目將被刪除。

以下是具有自定義DNS設(shè)置的Pod示例

(1).dns yaml 配置詳細(xì);

K8S 運維技巧--DNS 部分;

(2).運行dns ymal

K8S 運維技巧--DNS 部分;

(3).測試解析dns;

K8S 運維技巧--DNS 部分;

(4).創(chuàng)建上面的Pod后,容器?test?會在其?/etc/resolv.conf?文件中獲取以下內(nèi)容:

K8S 運維技巧--DNS 部分;

二.通過?kube-dns 配置私有dns;

1.準(zhǔn)備開始 2.配置存根域和上游?DNS?服務(wù)器 3.理解?Kubernetes?中名字解析 4.ConfigMap?選項

在 Kubernetes 中配置私有 DNS 和上游域名服務(wù)器

準(zhǔn)備開始

  • 你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 如果你還沒有集群,你可以通過?Minikube?構(gòu)建一 個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:

  • Katacoda

  • Play with Kubernetes

要獲知版本信息,請輸入?kubectl version.

  • Kubernetes 1.6 及其以上版本。

  • 集群必須配置使用?kube-dns?插件。

配置存根域和上游 DNS 服務(wù)器

部署kube-dns 步驟如下;

(1).獲取:kube-dns yaml

wget?https://raw.githubusercontent.com/feiskyer/kubernetes-handbook/master/manifests/kubedns/kube-dns.yaml?

(2).設(shè)置?kube-dns.yaml??clusterIP 集群ip地址 (參考:kubernetes 網(wǎng)斷中未使用ip地址)

kubectl get service --all-namespaces?

K8S 運維技巧--DNS 部分;

(3).注意kube-dns 鏡像需要進(jìn)行進(jìn)行獲取;

K8S 運維技巧--DNS 部分;

通過為 kube-dns (kube-system:kube-dns)提供 ConfigMap,集群管理員能夠指定自定義存根域和上游域名服務(wù)器。

例如,下面的 ConfigMap 建立了一個 DNS 配置,它具有一個單獨的存根域和兩個上游域名服務(wù)器:

apiVersion:?v1?
kind:?ConfigMap?
metadata:??
????name:?kube-dns??
????namespace:?kube-system?
????data:??stubDomains:?|????
??????????????????????{"acme.local":?["1.2.3.4"]}??
????????????????upstreamNameservers:?|????
??????????????????????["8.8.8.8",?"8.8.4.4"]

按如上說明,具有 “.acme.local” 后綴的 DNS 請求被轉(zhuǎn)發(fā)到 DNS 1.2.3.4。Google 公共 DNS服務(wù)器 為上游查詢提供服務(wù)。 下表描述了具有特定域名的查詢?nèi)绾斡成涞剿鼈兊哪繕?biāo) DNS 服務(wù)器:

域名響應(yīng)查詢的服務(wù)器
kubernetes.default.svc.cluster.localkube-dns
foo.acme.local自定義 DNS (1.2.3.4)
widget.com上游 DNS (8.8.8.8, 8.8.4.4,其中之一)

查看?ConfigMap 選項?獲取更多關(guān)于配置選項格式的詳細(xì)信息。

理解 Kubernetes 中名字解析

可以為每個 Pod 設(shè)置 DNS 策略。 當(dāng)前 Kubernetes 支持兩種 Pod 特定的 DNS 策略:“Default” 和 “ClusterFirst”。 可以通過?dnsPolicy?標(biāo)志來指定這些策略。?注意:“Default” 不是默認(rèn)的 DNS 策略。如果沒有顯式地指定?dnsPolicy,將會使用 “ClusterFirst”。

“Default” DNS 策略

如果?dnsPolicy?被設(shè)置為 “Default”,則名字解析配置會繼承自 Pod 運行所在的節(jié)點。 自定義上游域名服務(wù)器和存根域不能夠與這個策略一起使用。

“ClusterFirst” DNS 策略

如果?dnsPolicy?被設(shè)置為 “ClusterFirst”,處理名字解析有所不同,*依賴于是否配置了存根域和上游 DNS 服務(wù)器*。

未進(jìn)行自定義配置:沒有匹配上配置的集群域名后綴的任何請求,例如 “www.kubernetes.io”,將會被轉(zhuǎn)發(fā)到繼承自節(jié)點的上游域名服務(wù)器。

進(jìn)行自定義配置:如果配置了存根域和上游 DNS 服務(wù)器(類似于?前面示例?配置的內(nèi)容),DNS 查詢將基于下面的流程對請求進(jìn)行路由:

  1. 查詢首先被發(fā)送到 kube-dns 中的 DNS 緩存層。

  2. 從緩存層,檢查請求的后綴,并根據(jù)下面的情況轉(zhuǎn)發(fā)到對應(yīng)的 DNS 上:

  • *具有集群后綴的名字*(例如 “.cluster.local”):請求被發(fā)送到 kube-dns。

  • *具有存根域后綴的名字*(例如 “.acme.local”):請求被發(fā)送到配置的自定義 DNS 解析器(例如:監(jiān)聽在 1.2.3.4)。

  • *未能匹配上后綴的名字*(例如 “widget.com”):請求被轉(zhuǎn)發(fā)到上游 DNS(例如:Google 公共 DNS 服務(wù)器,8.8.8.8 和 8.8.4.4)。

K8S 運維技巧--DNS 部分;

ConfigMap 選項

kube-dns?kube-system:kube-dns?對應(yīng)的 ConfigMap 選項如下所示:

字段格式描述
stubDomains(可選)使用 DNS 后綴作為鍵(例如 “acme.local”)的 JSON map,以及由 DNS IP 的 JSON 數(shù)組組成的值。目標(biāo)域名服務(wù)器可能是一個 Kubernetes Service。例如,可以運行自己的 dnsmasq 副本,將 DNS 名字暴露到 ClusterDNS namespace 中。
upstreamNameservers(可選)DNS IP 的 JSON 數(shù)組。注意:如果指定,則指定的值會替換掉被默認(rèn)從節(jié)點的?/etc/resolv.conf?中獲取到的域名服務(wù)器。限制:最多可以指定三個上游域名服務(wù)器。

附加示例

示例:存根域

在這個例子中,用戶有一個 Consul DNS 服務(wù)發(fā)現(xiàn)系統(tǒng),他們希望能夠與 kube-dns 集成起來。 Consul 域名服務(wù)器地址為 10.150.0.1,所有的 Consul 名字具有后綴 “.consul.local”。 要配置 Kubernetes,集群管理員只需要簡單地創(chuàng)建一個 ConfigMap 對象,如下所示:

apiVersion:?v1
kind:?ConfigMap?
metadata:??
?????name:?kube-dns???
?????namespace:?kube-system?
?????data:??stubDomains:?|????
??????????????{"consul.local":?["10.150.0.1"]}

注意,集群管理員不希望覆蓋節(jié)點的上游域名服務(wù)器,所以他們不會指定可選的?upstreamNameservers?字段。

示例:上游域名服務(wù)器

在這個示例中,集群管理員不希望顯式地強制所有非集群 DNS 查詢進(jìn)入到他們自己的域名服務(wù)器 172.16.0.1。 而且這很容易實現(xiàn):他們只需要創(chuàng)建一個 ConfigMap,upstreamNameservers?字段指定期望的域名服務(wù)器即可:

apiVersion:?v1?
kind:?ConfigMap?
metadata:??
????name:?kube-dns??
????namespace:?kube-system?
data:??upstreamNameservers:?|???
??????????["172.16.0.1"]

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁題目:K8S運維技巧--DNS部分;-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://weahome.cn/article/hpdop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部