成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何暴露Pod中的服務到Kubernetes集群外?

云計算 云原生
在Pod的yaml定義文件中配置該選項后,Pod就使用宿主機的網絡棧,這樣和直接訪問運行在宿主機上的服務沒有什么區別。

使用Kubernetes集群運行服務,提供服務的應用運行在Pod中。為了在集群外訪問應用,有兩類方式:一類是Pod自身實現;其次是依賴其他組件。

  • Pod自身暴露服務

1、hostNetwork:true

在Pod的yaml定義文件中配置該選項后,Pod就使用宿主機的網絡棧,這樣和直接訪問運行在宿主機上的服務沒有什么區別,使用“宿主機IP+端口”的方式訪問運行在Pod中的服務,比如下面的Pod定義文件,

apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
hostNetwork: true
containers:
- name: nginx
image: nginx:1.23.1
ports:
- containerPort: 80

執行后,登錄容器運行的宿主機,可以看到有服務監聽在80端口,

監聽在宿主機的80端口

訪問也是沒有問題的(192.168.52.132是宿主機的IP)。

服務訪問

如果Pod重啟,可能會被調度到別的宿主機,這樣的話,訪問IP也需跟著變動,還有要防止端口沖突,如果已經有服務占用了宿主機的端口,新的Pod將不能啟動。

2、hostPort

將上面Pod的yaml文件稍作修改,增加最后一行,去掉“hostNetwork: true”。

apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.23.1
ports:
- containerPort: 80
hostPort: 8080

相對于第一種,可以靈活地配置對外暴露的端口。有一點需要注意,因為“hostPort”方式,服務監聽在容器的網絡棧,宿主機在防火墻上做了轉發,所以查詢宿主機8080端口,發現并沒有服務監聽,

監聽端口

查看防火墻,宿主機做了端口轉發。

Pod的IP

宿主機上執行DNAT

這種方式和第一種方式有相同的缺點,容器重啟可能會被調度到其他的主機上。不能在一臺宿主機上運行同樣的Pod,除非人為調整Pod對外暴露的端口。

  • 依賴組件暴露服務

上面兩種方法都是依賴Pod自身的資源定義暴露服務到集群外,下面兩種方法依賴其他Kubernetes資源實現服務的暴露。

3、NodePort

“NodePort”是Kubernetes中“Service”資源的一個屬性,默認“Service”實現集群內服務訪問,當增加“NodePort”時,服務便可以在集群外被訪問到,Kubernetes默認會從宿主機的端口30000-32767之間選擇一個來提供訪問,可以人為指定。

一個示例yaml文件。

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.23.1
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: nginx
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30000
targetPort: 80
selector:
name: nginx

應用該yaml文件后,便可以在集群外通過“主機IP+30000”的方式訪問服務。

nodePort方式訪問服務

為了實現高可用,可以部署haproxy,后端為多個集群宿主機暴露的服務,這樣可以提高可用性。“nodePort”方式的Service工作原理是這樣:當流量進入宿主機暴露的30000端口后,會被轉發給“Service”的“Cluster IP+端口”,然后通過Iptables(也有可能是ipvs,具體看實現)轉發到對應的Pod。

4、Ingress

使用Ingress暴露服務的方式在生產環境中使用的比較多。Ingress API資源對象在kubernetes有內置,但要使用這個對象,需要安裝“Controller”。可選的第三方“Controller”有很多,這里選擇“Nginx Ingress controller”。(安裝過程不涉及)。

示例yaml:

apiVersion: v1
kind: Pod
metadata:
namespace: test
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.23.1
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
namespace: test
name: nginx
spec:
ports:
- port: 8080
targetPort: 80
selector:
name: nginx
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: test
name: nginx
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: nginx.example.cc
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: nginx
port:
number: 8080

因為筆者的測試環境Ingress Controller使用nodePort方式運行,對外暴露的HTTP端口為31763。

ingress controller暴露的端口

使用Ingress資源定義中配置的域名訪問部署的服務。

訪問服務

生產環境可以修改Ingress controller網絡的工作方式,比如使用“hostPort”,讓其監聽在80端口。

有一點需要注意,不同于“nodePort”引導流量到Service的Cluster IP,Ingress Controller會將集群外用戶的流量直接送到Pod監聽的端口,這樣效率會高不少。

總結

除了以上介紹的四種暴露服務的方式,還可以采用“LoadBalancer”,它需要依賴云廠商,如果你的Kubernetes集群部署在公有云上,可以根據實際配置。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-07-07 10:47:16

IngressKubernetes

2022-07-05 08:10:25

Kubernetes云原生

2022-06-27 19:16:12

KubernetesK8s 集群

2023-02-27 07:56:55

IngressKubernetes

2023-11-07 08:23:05

2024-12-30 12:34:27

LB IngressZTMIP 地址

2020-04-10 08:00:08

Kubernetes補丁pod

2023-10-19 19:42:25

IstioPodkubernetes

2023-04-14 14:31:52

Kubernetes服務

2024-06-19 09:33:05

2025-03-04 08:20:00

2022-07-18 14:45:22

Kubernetes暴露方案

2022-03-07 10:41:09

云計算容器Kubernetes

2021-12-02 08:00:00

Kubernetes集群容器

2020-11-30 12:15:26

KubernetesPodLinux

2021-11-22 08:00:00

Kubernetes容器集群

2023-03-21 15:26:02

Kubernetes容器開發

2019-11-20 09:15:53

KubernetesPod

2021-12-21 15:17:53

Kubernetes緩存Linux

2023-02-09 16:47:34

KubernetesPod優先級
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美黄色精品 | 国产91在线 | 欧美 | 91免费观看在线 | 91精品久久久久久久久 | 97精品视频在线观看 | 日本不卡一区二区三区在线观看 | 请别相信他免费喜剧电影在线观看 | 国产午夜精品一区二区三区四区 | 日韩欧美亚洲 | 青春草在线 | 综合二区 | 福利视频一区 | 欧美xxxx做受欧美 | 久久99国产精品 | 国产精品视频一二三区 | av网站免费观看 | 国产人成精品一区二区三 | av资源在线看 | 男插女下体视频 | 伊人久久在线 | 中文字幕人成乱码在线观看 | 在线日韩在线 | 日本三级电影在线观看视频 | 国产精品成人在线播放 | 成人av一区二区三区 | www.久草.com | 国产高清亚洲 | 日韩中文字幕 | 日韩欧美一区二区三区在线播放 | 日韩午夜网站 | 国产一区二区三区在线观看免费 | 亚洲综合一区二区三区 | 成人国产精品 | 三级欧美 | 久久一二 | 久热精品视频 | 日韩高清一区 | 午夜免费电影 | 欧美福利 | 黄色网址在线播放 | 日韩精品免费播放 |