K8S之Ingress


参考视频:https://ke.qq.com/user/index/index.html#/plan/cid=1709963&term_id=102815140

一、概念

1.1.NodePort存在的不足

一个端口只能关联一个服务,端口需提前规划
只支持4层负载均衡(NodeIP+Port)

1.2.Ingress

关联Service
通过Ingress Controller实现Pod的负载均衡
支持TCP/UDP 4层和HTTP 7层
在这里插入图片描述

二、部署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

使用宿主机网络
镜像修改为上一步下载的镜像

在这里插入图片描述
kubectl apply -f mandatory.yaml

正常会监听宿主机的80和443端口
在这里插入图片描述

三、基于HTTP的Ingress规则

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是临时起的,需要写域名解析到hosts文件

echo "192.168.1.10 foo.bar.com" >> /etc/hosts
curl foo.bar.com

在这里插入图片描述

四、基于HTTPS的Ingress规则

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
在这里插入图片描述
在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页