国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s集群中service的域名解析、pod的域名解析

這篇具有很好參考價(jià)值的文章主要介紹了k8s集群中service的域名解析、pod的域名解析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

在k8s集群中,service和pod都可以通過(guò)域名的形式進(jìn)行相互通信,換句話(huà)說(shuō),在k8s集群內(nèi),通過(guò)service和pod的域名,可以直接訪(fǎng)問(wèn)內(nèi)部應(yīng)用,不必在通過(guò)service ip地址進(jìn)行通信,一般的,我們創(chuàng)建service的時(shí)候不建議指定service的clusterIP,而是讓k8s自動(dòng)為service分配一個(gè)clusterIP,這樣,service的IP是自動(dòng)分配,但是service名字總是固定的吧,這樣在集群內(nèi)部就可以直接通過(guò)service的域名來(lái)連接即可,如前端pod應(yīng)用直接通過(guò)service域名來(lái)連接后端pod。

service的域名

完整的service域名解析是:<servicename>.<namespace>.svc.<clusterdomain> 其中,servicename為service名稱(chēng),namespace為service所處的命名空間,clusterdomain是k8s集群設(shè)計(jì)的域名后綴,默認(rèn)為cluster.local。
一般的,在生產(chǎn)環(huán)境中,我們可以直接簡(jiǎn)寫(xiě)為<servicename>.<namespace>即可,后面的部分保持默認(rèn)即可。如果pod與svc是在同一個(gè)命名空間,那么直接寫(xiě)svc即可,如 <servicename>。

#查看k8s集群設(shè)置的域名后綴
cat /opt/kubernetes/config/kubelet-config.yml  | grep -i clusterDomain			#二進(jìn)制安裝的k8s集群,可以這樣查看
cat  /etc/kubernetes/kubelet.conf 					#kubeadm安裝的k8s集群,各個(gè)節(jié)點(diǎn)的kubelet.conf文件中的字段clusterDomain
kubectl  -n kube-system get cm coredns -oyaml		#coredns cm里面也可以看到
kubectl  exec -it deployment-busybox-567674bd67-lmrgw --  cat /etc/resolv.conf	#直接看pod里面的resolv.conf文件亦可

演示示例:
下面,我們通過(guò)創(chuàng)建一個(gè)deployment和service,然后創(chuàng)建一個(gè)測(cè)試pod,在測(cè)試pod中通過(guò)訪(fǎng)問(wèn)service域名的形式訪(fǎng)問(wèn)應(yīng)用,驗(yàn)證service域名是否正常。如下所示:

# 創(chuàng)建一個(gè)deployment,有3個(gè)副本
[root@master service]# vim deployment-nginx.yaml         
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    env: dev
    tiar: front
  name: deployment-nginx
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.7.9
        imagePullPolicy: IfNotPresent
        name: nginx-container
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
      restartPolicy: Always
#創(chuàng)建一個(gè)service,用于反向代理上面創(chuàng)建的deployment的pod
[root@master service]# vim svc-deployment-nginx.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: svc-deployment-nginx
  namespace: default
spec:
  ports:
  - name: nginx-port
    nodePort: 30080
    port: 80
    protocol: TCP
    targetPort: http
  selector:
    app: nginx
  type: NodePort
#創(chuàng)建一個(gè)pod用于測(cè)試
[root@master service]# cat ../pod/pod-busybox.yaml 
apiVersion: v1
kind: Pod
metadata: 
  name: pod-command
  labels: 
    env: dev
  namespace: default
spec:
  nodeName: node2
  containers:
  - image: busybox
    name: busybox-container
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh","-c","touch /tmp/hello.txt;while true;do /bin/echo $(date +%T) >> /tmp/hello.txt;sleep 3;done;"]
    resources:
      limits:
        cpu: 2
        memory: 2G
      requests:
        cpu: 1
        memory: 500M
[root@master service]# 
# 在測(cè)試pod中直接訪(fǎng)問(wèn)service的域名
[root@master service]# kubectl exec -it pod-command -- /bin/sh			#進(jìn)入到測(cè)試pod中
/ # wget http://svc-deployment-nginx.default.svc.cluster.local:80		#這個(gè)pod沒(méi)有curl命令,所以通過(guò)wget命令下載
Connecting to svc-deployment-nginx.default.svc.cluster.local:80 (10.111.193.190:80)		#下載成功
saving to 'index.html'
index.html           100% |*******************************************************************************************************************************************************************************************|   612  0:00:00 ETA
'index.html' saved
/ # cat index.html 														#下載成功,這是nginx的index文件,說(shuō)明通過(guò)service域名訪(fǎng)問(wèn)是正常的
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
/ # 


wget http://svc-deployment-nginx.default.svc.cluster.local:80		#完整的寫(xiě)法
wget http://svc-deployment-nginx.default:80							#帶命名空間寫(xiě)法
wget http://svc-deployment-nginx:80									#如果pod與svc在同一個(gè)命名空間,可以將命名空間省略不寫(xiě)

以上,說(shuō)明,在pod內(nèi)部通過(guò)訪(fǎng)問(wèn)service域名的形式訪(fǎng)問(wèn)其他服務(wù),service的域名解析是正常的。

注意:不要在宿主機(jī)上curl service的域名,這樣是訪(fǎng)問(wèn)不通的,因?yàn)閟ervice的域名是由k8s集群dns 這個(gè)pod解析的,不是外部宿主機(jī)的dns服務(wù)器解析的。所以,你直接在宿主機(jī)命令行curl service域名,肯定是行不通的。service的域名解析是供k8s集群內(nèi)部pod應(yīng)用之間進(jìn)行訪(fǎng)問(wèn)的。換句話(huà)說(shuō),service域名僅供pod內(nèi)使用。

pod的域名解析

pod的DNS域名格式為:<pod-ip>.<namespace>.pod.<clusterdomain> ,其中,pod-ip需要使用-將ip直接的點(diǎn)替換掉,namespace為pod所在的命名空間,clusterdomain是k8s集群設(shè)置的域名后綴,一般默認(rèn)為 cluster.local ,如果沒(méi)有改變k8s集群默認(rèn)的域名后綴,則可以省略該后綴不寫(xiě)。除此之外,其他的均不可省略,這一點(diǎn)與svc域名有所不同。
演示如下:

#進(jìn)入default命名空間的busybox pod里面,測(cè)試下載文件
kubectl -n default exec -it deployment-busybox-567674bd67-lmrgw -- sh
wget 10-244-166-167.helm.pod.cluster.local:80		#可以正常下載,這里下載的是helm命名空間里的IP為10.244.166.167的pod
wget 10-244-166-167.helm.pod:80						#可以正常下載,這里把k8s集群設(shè)置的域名后綴默認(rèn)省略了					
wget 10-244-166-143.default.pod:80					#可以正常下載,這里下載的是default命名空間里的IP為10.244.166.143的pod
wget 10-244-166-143.default:80						#報(bào)錯(cuò)了,錯(cuò)誤寫(xiě)法,說(shuō)明不能省略pod關(guān)鍵字
wget 10-244-166-143:80								#報(bào)錯(cuò)了,錯(cuò)誤寫(xiě)法,說(shuō)明不能省略命名空間和pod關(guān)鍵字

對(duì)應(yīng)deployment、deamonset等創(chuàng)建的pod,還可以<pod-ip>.<deployment-name>.<namespace>.svc.<clusterdomain> 訪(fǎng)問(wèn)。(這個(gè)一直測(cè)試失敗,不指定是不是書(shū)中寫(xiě)錯(cuò)了,所以這點(diǎn)存疑)

對(duì)于StatefulSet創(chuàng)建的pod,statefulset.spec.serviceName字段解釋如下:

[root@matser ~]# kubectl explain  statefulset.spec.serviceName
KIND:     StatefulSet
VERSION:  apps/v1
FIELD:    serviceName <string>
DESCRIPTION:
     serviceName is the name of the service that governs this StatefulSet. This
     service must exist before the StatefulSet, and is responsible for the
     network identity of the set. Pods get DNS/hostnames that follow the
     pattern: pod-specific-string.serviceName.default.svc.cluster.local where
     "pod-specific-string" is managed by the StatefulSet controller.
[root@matser ~]#

也就是說(shuō)sts創(chuàng)建的pod,其pod的域名為:pod-specific-string.serviceName.default.svc.cluster.local,而pod-specific-string就是pod的名稱(chēng)。
例如:redis-sts-0.redis-svc.default.svc.cluster.local:6379,redis-sts-1.redis-svc.default.svc.cluster.local:6379,redis-sts-2.redis-svc.default.svc.cluster.local:6379,redis-sts-3.redis-svc.default.svc.cluster.local:6379,redis-sts-4.redis-svc.default.svc.cluster.local:6379,redis-sts-5.redis-svc.default.svc.cluster.local:6379,pod里面的應(yīng)用程序就可以拿這串字符串去連接Redis集群了。

總結(jié)

以上,service的域名解析很重要,我們只需要在k8s集群內(nèi)部的pod里面連接訪(fǎng)問(wèn)service的域名即可,因?yàn)閟ervice的名稱(chēng)總是固定的,既然是固定的,那么可以直接通過(guò)訪(fǎng)問(wèn)service的域名方式來(lái)訪(fǎng)問(wèn)對(duì)應(yīng)的service即可。
至于普通pod的域名解析,可以不用太過(guò)在乎,了解即可,因?yàn)閜od的生命周期是不固定的,隨時(shí)都可能消亡,也就是說(shuō)pod IP隨時(shí)可能變化,所以根本不會(huì)使用pod域名訪(fǎng)問(wèn)pod應(yīng)用。
對(duì)應(yīng)StatefulSet 創(chuàng)建的有狀態(tài)的pod,其pod域名解析是固定格式的,這個(gè)要記著,pod-specific-string.serviceName.default.svc.cluster.local,pod-specific-string就是pod的名稱(chēng)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-790600.html

到了這里,關(guān)于k8s集群中service的域名解析、pod的域名解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【博客628】k8s pod訪(fǎng)問(wèn)集群外域名原理以及主機(jī)開(kāi)啟了systemd-resolved的不同情況

    沒(méi)有使用systemd-resolved的linux主機(jī)上訪(fǎng)問(wèn)外部域名一般是按照以下步驟來(lái)的: 從dns緩存里查找域名與ip的映射關(guān)系 從/etc/hosts里查找域名與ip的映射關(guān)系 從/etc/resolv.conf里查找dns server,并發(fā)起解析請(qǐng)求 /etc/resolv.conf的內(nèi)容一般如下: nameserver 8.8.8.8 使用systemd-resolved的linux主機(jī)上訪(fǎng)

    2024年02月04日
    瀏覽(17)
  • k8s1.20集群域名與集群ip解析詳解及使用案例

    目錄 一.k8s中的域名解析淺析 1.單機(jī) 2.k8s的容器中 二.k8s不同版本對(duì)應(yīng)的dns域名服務(wù)組件

    2024年02月09日
    瀏覽(25)
  • 【Java】基于fabric8io庫(kù)操作k8s集群實(shí)戰(zhàn)(pod、deployment、service、volume)

    【Java】基于fabric8io庫(kù)操作k8s集群實(shí)戰(zhàn)(pod、deployment、service、volume)

    一開(kāi)始了解到Java Api庫(kù)操作k8s集群,有兩個(gè),分別為: kubernetes-client/java fabric8io/kubernetes-client 但個(gè)人對(duì)比使用了兩個(gè)發(fā)現(xiàn),還是 fabric8io更易用 ,用的人多是有道理的, fabric8io和yaml文件十分貼切 ,所以 通俗易懂 。本文前提是已配置好集群,已經(jīng)熟悉了kubectl工具常用命令。

    2024年02月02日
    瀏覽(19)
  • 云原生 黑馬Kubernetes教程(K8S教程)筆記——第一章 kubernetes介紹——Master集群控制節(jié)點(diǎn)、Node工作負(fù)載節(jié)點(diǎn)、Pod控制單元

    云原生 黑馬Kubernetes教程(K8S教程)筆記——第一章 kubernetes介紹——Master集群控制節(jié)點(diǎn)、Node工作負(fù)載節(jié)點(diǎn)、Pod控制單元

    參考文章:kubernetes介紹 本章節(jié)主要介紹應(yīng)用程序在服務(wù)器上部署方式演變以及kubernetes的概念、組件和工作原理。 在部署應(yīng)用程序的方式上,主要經(jīng)歷了三個(gè)時(shí)代: 傳統(tǒng)部署:互聯(lián)網(wǎng)早期,會(huì)直接將應(yīng)用程序部署在物理機(jī)上 優(yōu)點(diǎn):簡(jiǎn)單,不需要其它技術(shù)的參與 缺點(diǎn):不能為

    2024年02月04日
    瀏覽(35)
  • 基于Docker的K8s(Kubernetes)集群部署

    基于Docker的K8s(Kubernetes)集群部署

    開(kāi)始搭建k8s集群 三臺(tái)服務(wù)器修改主機(jī)名稱(chēng) 關(guān)閉對(duì)話(huà)窗口,重新連接 三臺(tái)主機(jī)名稱(chēng)呢就修改成功了。 接下來(lái)修改每臺(tái)節(jié)點(diǎn)的 hosts 文件 所有節(jié)點(diǎn)關(guān)閉 setLinux 查看是否關(guān)閉成功 為每個(gè)節(jié)點(diǎn)添加 k8s 數(shù)據(jù)源 如果安裝docker數(shù)據(jù)源找不到y(tǒng)um-config 所有節(jié)點(diǎn)安裝kubelet kubelet安裝中… k

    2024年02月08日
    瀏覽(25)
  • 玩轉(zhuǎn)k8s(四)—— 通過(guò)Service訪(fǎng)問(wèn)Pod

    ????????我們不應(yīng)該期望k8s Pod是健壯的,而是要假設(shè)Pod中的容器很可能因?yàn)楦鞣N原因發(fā)生故障而死掉。Deployment等Controller會(huì)通過(guò)動(dòng)態(tài)的創(chuàng)建和銷(xiāo)毀Pod來(lái)保證應(yīng)用整體的健壯性。換句話(huà)說(shuō), Pod是脆弱的,但應(yīng)用是健壯的 。 ? ? ? ? 每個(gè)Pod都有自己的IP地址,當(dāng)Controller用新的

    2024年02月05日
    瀏覽(20)
  • 在線(xiàn)搭建K8S,kubernetes集群v1.23.9,docker支持的最后一個(gè)版本

    在線(xiàn)搭建K8S,kubernetes集群v1.23.9,docker支持的最后一個(gè)版本

    執(zhí)行后的結(jié)果如下: 到這里一個(gè)K8S集群就完整的部署好了,如果有其他的node節(jié)點(diǎn)操作方法是一樣的,如果是高可用的,多個(gè)master可以給我留言,告訴你怎么操作。

    2024年02月14日
    瀏覽(24)
  • 在學(xué)習(xí)k8s時(shí)候,pod services 和deployment

    在學(xué)習(xí) Kubernetes(K8s)時(shí),Pod、Service 和 Deployment 是三個(gè)非常重要的概念。它們是 Kubernetes 中用于管理容器化應(yīng)用程序的核心組件。 Pod(Pods): Pod 是 Kubernetes 最基本的調(diào)度和管理單位,它是一個(gè)或多個(gè)緊密關(guān)聯(lián)的容器的組合。Pod 提供了一個(gè)獨(dú)立的運(yùn)行環(huán)境,包含應(yīng)用程序所

    2024年02月11日
    瀏覽(21)
  • k8s~ingress_service_endpoint_pod四壯士

    k8s~ingress_service_endpoint_pod四壯士

    在Kubernetes中,Service和Endpoints是兩個(gè)重要的概念,它們之間存在著密切的關(guān)系。 Ingress :Ingress是一個(gè)k8s環(huán)境的網(wǎng)關(guān),正常情況下,你外部的流量應(yīng)該先指向ingress所有節(jié)點(diǎn)的IP,ingress的端口默認(rèn)是80(http)和443(https),然后再由ingress進(jìn)行域名傳發(fā)到具體的service或者deployment上面。在

    2024年02月04日
    瀏覽(95)
  • 【Kubernetes】K8s 查看 Pod 的狀態(tài)

    NAME :Pod 的名稱(chēng)。 READY :代表 Pod 里面有幾個(gè)容器,前面是啟動(dòng)的,后面是總數(shù), 1 / 1 1/1 1/1 。 STATUS :就是當(dāng)前 Pod 狀態(tài),最常見(jiàn)的就是 Running 正在運(yùn)行,最期望的狀態(tài),只要不是 Running 的就說(shuō)明有問(wèn)題,就算是 Running 的就不一定沒(méi)有問(wèn)題。 狀態(tài) 說(shuō)明 Pending 掛起 在執(zhí)行創(chuàng)建

    2024年01月15日
    瀏覽(138)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包