最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳細(xì)聊聊K8s容器內(nèi)nginx帶變量的域名解析

 更新時(shí)間:2022年01月24日 09:13:07   投稿:daisy  
這篇文章主要給大家介紹了關(guān)于K8s容器內(nèi)nginx帶變量域名的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

如果 nginx 的 proxy_pass 指令帶有變量名的話:

server {
	server_name ~^(\w+)\.example\.com$;
	location / {
		proxy_pass http://svc-$1;
	}
}

不配置 resolver 是不能使用的(雖然可以成功加載配置):

$ curl --resolve 'a.example.com:80:127.0.0.1' a.example.com
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.14.2</center>
</body>
</html>

nginx 的錯(cuò)誤日志:

[error] 615#615: *1 no resolver defined to resolve svc-a

查看當(dāng)前的 resolve 配置:

$ cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5

嘗試把它添加到 nginx 的配置里面:

server {
	server_name ~^(\w+)\.example\.com$;
	location / {
		resolver 10.152.183.10;
		proxy_pass http://svc-$1;
	}
}

結(jié)果是仍然不能可用:

[error] 3817#3817: *10 svc-a could not be resolved (3: Host not found)

nginx 要求配置 resolver 指令,那么可以猜測,它沒有使用系統(tǒng)的 resolve.conf 文件,也就是:不走系統(tǒng)那一套來解析域名。 所以現(xiàn)在的差異就在于下面 search 這一行了:

search default.svc.cluster.local svc.cluster.local cluster.local

search 指令的用途:當(dāng)名字無法解析時(shí),加上這些后綴再嘗試解析。

根據(jù) K8s 的 Service 的 DNS 文章所言可以推測:

  • cluster.local 是 K8s 的 cluster_domain
  • default.svc.cluster.local 是名字空間的域名( default 是我的名字空間)

而服務(wù)的域名則是:<服務(wù)>.<名字空間域名>。

所以當(dāng)我 curl svc-a 的時(shí)候,實(shí)際上返回的是 svc-a.default.svc.cluster.local 的結(jié)果:

$ host svc-a
svc-a.default.svc.cluster.local has address 10.152.183.160

$ host svc-a.default
svc-a.default.svc.cluster.local has address 10.152.183.160

$ host svc-a.default.svc
svc-a.default.svc.cluster.local has address 10.152.183.160

$ host svc-a.default.svc.cluster.local
svc-a.default.svc.cluster.local has address 10.152.183.160

看出來了嗎?以上命令省略的恰好是 search 指令列出來的部分。

但是,nginx 的 resolver 不支持 search,所以應(yīng)該寫完整的域名。

server {
	server_name ~^(\w+)\.example\.com$;
	location / {
		resolver 10.152.183.10;
		proxy_pass http://svc-$1.default.svc.cluster.local;
	}
}

以上這樣配置就沒有問題了。 但是,hardcode 了一個(gè) resolver,不好,得去掉,用服務(wù)名的方式找到 K8s DNS 的域名。 我的 K8s 的域名是 kube-dns 服務(wù)提供的,名字空間是 kube-system,所以完整的 resolver 是: kube-dns.kube-system.svc.cluster.local。

$ host kube-dns.kube-system.svc.cluster.local
kube-dns.kube-system.svc.cluster.local has address 10.152.183.10

最終的 nginx 配置:

server {
	server_name ~^(\w+)\.example\.com$;
	location / {
		resolver kube-dns.kube-system.svc.cluster.local;
		proxy_pass http://svc-$1.default.svc.cluster.local;
	}
}

其中的變量,應(yīng)該按你的場景來修改:

  • kube-dns 是我的集群使用的 DNS 服務(wù)

  • kube-system 是我的 DNS 服務(wù)所在的名字空間

  • default 是我的名字空間

  • cluster.local 是集群域名(cluster_domain)

    有至少兩種方式可以拿到這個(gè)集群域名:

    • /etc/resolv.conf 文件的 search 指令。

    • 這是 kubelet 的一個(gè)啟動(dòng)參數(shù),可以找到你的集群啟動(dòng)參數(shù)來獲取到。 我這里用的是 microk8s 搭建的測試集群,其中就有一個(gè)集群域名參數(shù)的值。

      $ ps aux|grep kubelet
      root      728595 16.0 11.1 3549776 872556 ?      Ssl  02:25   9:44 /snap/microk8s/2870/kubelite --scheduler-args-file=/var/snap/microk8s/2870/args/kube-scheduler --controller-manager-args-file=/var/snap/microk8s/2870/args/kube-controller-manager --proxy-args-file=/var/snap/microk8s/2870/args/kube-proxy --kubelet-args-file=/var/snap/microk8s/2870/args/kubelet --apiserver-args-file=/var/snap/microk8s/2870/args/kube-apiserver --kubeconfig-file=/var/snap/microk8s/2870/credentials/client.config --start-control-plane=true
      
      $ cat /var/snap/microk8s/2870/args/kubelet
      ...
      --cluster-domain=cluster.local
      ...
      

    由于集群域名不是變化的量,所以每次從文件里面讀取并無必要(第一種方式),所以推薦第二種。

總結(jié) 

到此這篇關(guān)于K8s容器內(nèi)nginx帶變量域名解析的文章就介紹到這了,更多相關(guān)K8s容器內(nèi)nginx域名解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置

    詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置

    這篇文章主要介紹了詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置的相關(guān)資料,這里提供實(shí)例幫助大家,學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Mac中使用Nginx實(shí)現(xiàn)80端口轉(zhuǎn)發(fā)8080端口

    Mac中使用Nginx實(shí)現(xiàn)80端口轉(zhuǎn)發(fā)8080端口

    端口轉(zhuǎn)發(fā)(Port forwarding),有時(shí)被叫做隧道,是安全殼(SSH) 為網(wǎng)絡(luò)安全通信使用的一種方法。端口轉(zhuǎn)發(fā)是轉(zhuǎn)發(fā)一個(gè)網(wǎng)絡(luò)端口從一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)到另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的行為,其使一個(gè)外部用戶從外部經(jīng)過一個(gè)被激活的NAT路由器到達(dá)一個(gè)在私有內(nèi)部IP地址(局域網(wǎng)內(nèi)部)上的一個(gè)端口
    2017-09-09
  • 如何自定義Nginx JSON日志格式配置

    如何自定義Nginx JSON日志格式配置

    Nginx作為最流行的Web服務(wù)器之一,其靈活的日志配置能力允許我們根據(jù)需求定制日志格式,本文將詳細(xì)介紹如何配置Nginx以JSON格式記錄訪問日志,這種結(jié)構(gòu)化日志格式特別適合ELK等日志分析系統(tǒng)處理,感興趣的朋友一起看看吧
    2025-03-03
  • 解決nginx重新加載配置文件,配置文件沒生效問題

    解決nginx重新加載配置文件,配置文件沒生效問題

    這篇文章主要介紹了解決nginx重新加載配置文件,配置文件沒生效問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx實(shí)現(xiàn)防盜鏈的多種方式

    Nginx實(shí)現(xiàn)防盜鏈的多種方式

    防盜鏈指的是防止其他網(wǎng)站未經(jīng)許可直接引用你的資源(如圖片、音視頻文件、文檔等),這樣做不僅能有效節(jié)約帶寬,還能防止未經(jīng)授權(quán)的內(nèi)容被濫用,本文給大家介紹了Nginx實(shí)現(xiàn)防盜鏈的多種方式,需要的朋友可以參考下
    2025-01-01
  • nginx網(wǎng)站服務(wù)如何配置防盜鏈(推薦)

    nginx網(wǎng)站服務(wù)如何配置防盜鏈(推薦)

    這篇文章主要介紹了nginx網(wǎng)站服務(wù)如何配置防盜鏈,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • nginx服務(wù)器配置解決ajax的跨域問題

    nginx服務(wù)器配置解決ajax的跨域問題

    本文給大家分享的是一個(gè)nginx服務(wù)器配置解決ajax的跨域問題的小技巧,非常的實(shí)用,有相同需求的小伙伴可以參考下
    2017-03-03
  • nginx如何將http訪問的網(wǎng)站改成https訪問

    nginx如何將http訪問的網(wǎng)站改成https訪問

    這篇文章主要介紹了nginx如何將http訪問的網(wǎng)站改成https訪問,幫助大家更好的理解和使用nginx,感興趣的朋友可以了解下
    2021-02-02
  • nginx中斜杠(‘/‘)的具體使用

    nginx中斜杠(‘/‘)的具體使用

    在Nginx配置的過程中,斜杠(/)經(jīng)常使用到,它們不僅可以區(qū)分不同的路徑,還有其他的作用,本文就詳細(xì)的介紹了nginx中斜杠(‘/‘)的具體使用,感興趣的可以了解一下,感興趣的可以了解一下
    2023-10-10
  • Nginx配置之實(shí)現(xiàn)多臺(tái)服務(wù)器負(fù)載均衡

    Nginx配置之實(shí)現(xiàn)多臺(tái)服務(wù)器負(fù)載均衡

    這篇文章主要介紹了Nginx配置之實(shí)現(xiàn)多臺(tái)服務(wù)器負(fù)載均衡,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

广南县| 定陶县| 浮梁县| 平江县| 石台县| 永州市| 嘉义县| 高邮市| 吉林省| 佛山市| 吉首市| 辰溪县| 英山县| 海林市| 屏东县| 名山县| 泰和县| 湖北省| 新乡市| 平泉县| 开阳县| 祁门县| 双江| 拉孜县| 浦北县| 会昌县| 岗巴县| 安庆市| 陵水| 广水市| 铁力市| 道孚县| 锦州市| 宜昌市| 汾阳市| 商城县| 辽宁省| 习水县| 英吉沙县| 保康县| 岚皋县|