第六章 Ingress
- 什么是 Ingress
- Ingress 和 Service 區(qū)別
- Ingress 控制器 Traefik 使用
- Ingress Route的定義
1 簡(jiǎn)介
https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/
Ingress 是一種 Kubernetes 資源類型,它允許在 Kubernetes 集群中暴露 HTTP 和 HTTPS 服務(wù)。通過 Ingress,您可以將流量路由到不同的服務(wù)和端點(diǎn),而無需使用不同的負(fù)載均衡器。Ingress 通常使用 Ingress Controller 實(shí)現(xiàn),它是一個(gè)運(yùn)行在 Kubernetes 集群中的負(fù)載均衡器,它根據(jù)Ingress 規(guī)則配置路由規(guī)則并將流量轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)。
在 Kubernetes 中,一個(gè) Ingress 資源定義了一組規(guī)則,這些規(guī)則用于指定外部流量如何到達(dá)集群中的服務(wù)。Ingress 資源定義包括域名、服務(wù)、路徑和其他信息,通過這些信息,Ingress Controller 就能夠?qū)⒄?qǐng)求路由到正確的服務(wù)。同時(shí),Ingress 還提供了 TLS 選項(xiàng),可以使用 SSL/TLS 來加密傳輸數(shù)據(jù)。
總之,Ingress 是一種強(qiáng)大的 Kubernetes 資源類型,可以幫助您在 Kubernetes 集群中輕松地管理 HTTP 和 HTTPS 服務(wù),并提供靈活的路由和負(fù)載均衡選項(xiàng)。
Ingress 簡(jiǎn)單示例:
2 Ingress 和 Service 區(qū)別
Ingress 和 Service都是 Kubernetes 中用于將流量路由到應(yīng)用程序的機(jī)制,但它們?cè)诼酚蓪用嫔嫌兴煌?/p>
- Service 是 Kubernetes 中抽象的應(yīng)用程序服務(wù),它公開了一個(gè)單一的IP地址和端口,可以用于在 Kubernetes 集群內(nèi)部的 Pod 之間進(jìn)行流量路由。
- Ingress 是一個(gè) Kubernetes 資源對(duì)象,它提供了對(duì)集群外部流量路由的規(guī)則。Ingress 通過一個(gè)公共IP地址和端口將流量路由到一個(gè)或多個(gè)Service。
3 Ingress Controller
Ingress Controller 是 Kubernetes 中的一種資源,它負(fù)責(zé)將外部請(qǐng)求轉(zhuǎn)發(fā)到集群內(nèi)部的 Service 中,并提供負(fù)載均衡、SSL 終止等功能。Ingress Controller 通常會(huì)運(yùn)行在 Kubernetes 集群中,作為一組 Deployment 和 Service 的形式部署。
常見的 Ingress Controller 包括:
- Nginx Ingress Controller 是由 Kubernetes 社區(qū)維護(hù)的另一個(gè) Ingress Controller,它也是使用 Nginx 作為反向代理實(shí)現(xiàn)的,可以支持 HTTP 和 HTTPS 等協(xié)議,支持負(fù)載均衡、路由、HTTPS證書管理等功能。
- Ingress Nginx Controller 是官方維護(hù)的一個(gè) Ingress Controller,它是使用 Nginx 作為反向代理實(shí)現(xiàn)的,可以支持 HTTP 和 HTTPS 等協(xié)議,支持負(fù)載均衡、路由、HTTPS證書管理等功能。
- Traefik Ingress Controller:基于 Go 語言開發(fā)的 Ingress Controller,支持多種路由匹配方式和多種后端服務(wù)發(fā)現(xiàn)方式。
- Traefik Ingress Controller: 標(biāo)準(zhǔn)實(shí)現(xiàn) 支持 官方 Ingress 路由規(guī)則 注意: 這種方式使用繁瑣!
- Traefik Route CRD(customer resuource definition)自定義資源 注意: 使用這種方式簡(jiǎn)單,自定義資源方式定義路由規(guī)則。
- Istio Ingress Controller:基于 Istio Service Mesh 實(shí)現(xiàn)的 Ingress Controller,提供了更豐富的負(fù)載均衡、流量控制和安全功能。
- Kong Ingress Controller:使用 Kong 作為反向代理實(shí)現(xiàn) Ingress 功能,支持 API 管理和 Gateway 功能。
4 使用 Traefik Ingress CRD 方式
官方網(wǎng)站: https://doc.traefik.io/traefik/文章來源:http://www.zghlxwxcb.cn/news/detail-732004.html
具體參考: https://doc.traefik.io/traefik/user-guides/crd-acme/文章來源地址http://www.zghlxwxcb.cn/news/detail-732004.html
1 pod 無法訪問 Service 解決方案
$ kubectl edit cm kube-proxy -n kube-system
ipvs:
excludeCIDRs: null
minSyncPeriod: 0s
scheduler: ""
strictARP: false
syncPeriod: 0s
tcpFinTimeout: 0s
tcpTimeout: 0s
udpTimeout: 0s
kind: KubeProxyConfiguration
metricsBindAddress: ""
mode: "ipvs" #這里默認(rèn)為空,填寫ipvs保存
$ cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
modprobe -- br_netfilter
EOF
$ chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
$ kubectl get pod -n kube-system | grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
到了這里,關(guān)于K8s(Kubernetes)學(xué)習(xí)(六)——Ingress的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!