記事ディレクトリ
参照ビデオ:https://ke.qq.com/user/index/index.html#/plan/cid=1709963&term_id=102815140
1.コンセプト
1.1.NodePort存在的不足
ポートは1つのサービスにのみ関連付けることができ、ポートは事前に計画する必要があり
ます。4層の負荷分散(NodeIP +ポート)のみをサポートします。
1.2.Ingress
関連サービス
は、Ingress Controllerを介してポッドの負荷分散を実現し、
TCP / UDPレイヤー4およびHTTPレイヤー7をサポートします
2. Ingress Controllerをデプロイします(グローバルロードバランシング)
2.1.下载yaml文件
アドレス:https://github.com/kubernetes/ingress-nginx/tree/nginx-0.30.0
2.2.下载镜像
docker pull siriuszg/nginx-ingress-controller:0.30.0
2.3修改mandatory.yaml
ホストネットワーク
ミラーを使用して、前の手順でダウンロードしたミラーイメージを変更し
ます。kubectlapply-f required.yaml
ホストのポート80と443を正常に監視します
3つのHTTPベースの入力ルール
3.1.yaml文件
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: web
servicePort: 80
説明
host: foo.bar.com #访问Ingress的域名
serviceName: web #管理服务名为web的Service
servicePort: 80 #Service监听的端口为80,通过kubectl get svc查看
kubectl apply -f ingress.yaml
kubectl get ing
3.2.访问域名
どのノードnginx-ingress-controllerがデプロイされているかを確認します
kubectl get pod -o wide -ningress-nginx
nginx-ingress-controllerは192.168.1.10ノードにデプロイされます
。foo.bar.comは一時的なものであるため、ドメイン名の解決をホストファイルに書き込む必要があります。
echo "192.168.1.10 foo.bar.com" >> /etc/hosts
curl foo.bar.com
4、HTTPSに基づく入力ルール
4.1.生成自签证书
openssl genrsa > cert.key
openssl req -new -x509 -key cert.key -subj "/CN=common" >cert.pe
4.2.创建secret
kubectl create secret tls foo-bar-com --cert=cert.pem --key=cert.key
kubectl get secrets
4.3.Ingress规则
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: tls-example-ingress
spec:
tls:
- hosts:
- foo.bar.com
secretName: foo-bar-com
rules:
- host: foo.bar.com
http:
paths:
- path: /
backend:
serviceName: web
servicePort: 80
kubectl apply -f ingress-https.yaml