Ingress為彌補NodePort不足而生
NodePort一些不足:
• 一個端口只能一個服務使用,端口需提前規划
• 只支持4層負載均衡
nginx 動態感知pod ip 的變化,根據變化動態設置nginx 的upstream,並實現負載均衡
ingress controller 動態刷新 pod ip 列表 更新到 nginx 的配置文件
Pod與Ingress的關系
通過Service相關聯
通過Ingress Controller實現Pod的負載均衡 - 支持TCP/UDP 4層和HTTP 7層
Ingress Controller
1. 部署Ingress Controller
Nginx:官方維護的Ingress Controller
部署文檔:https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md
注意事項:
• 鏡像地址修改成國內的:registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1
• 使用宿主機網絡:hostNetwork: true
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
mandatory.yaml 里一共有3個configmap 一個是配置七層的,二個是配置四層的分別對應udp tcp
從apiserver 動態獲取 endpoint ,從apiserver訪問就必須授權,就需要創建serviceaccount,僅僅獲取ip 列表,所以授予的權限 查看即可。
由於國外的鏡像往往不能被 很好d 拉取。
更換配置中的默認鏡像地址registry.cn-hangzhou.aliyuncs.com/benjamin-learn//nginx-ingress-controller:0.20.0
hostNetwork 字段和 container 一個層級
hostNetwork: true
創建ingress-controller 發現pod 起不來
報錯提示1:
Error generating self-signed certificate: could not create temp pem file /etc/ingress-co
ntroller/ssl/default-fake-certificate.pem: open /etc/ingress-controller/ssl/default-fake-certificate.pem797363033: permission denied
解決方法:
原因:隨着版本提高,安全限制越來越高,對於權限的管理也越來越精細
node節點分別 chmod -R 777 /var/lib/docker 授權任意用戶有docker臨時文件的任意權限
完整 ingress-controller的 yaml
mandatory.yaml
apiVersion