文章目录
master端:server2
node端:server3,server4
1. Ingress
1.1 简介
Ingress:
Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。
Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟托管。
Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。
Ingress 控制器:
为了让 Ingress 资源工作,集群必须有一个正在运行的 Ingress 控制器。
Kubernetes 作为一个项目,目前支持和维护 AWS, GCE 和 nginx Ingress 控制器
1.2 Ingress 规则
每个 HTTP 规则都包含以下信息:
- 可选的 host。在此示例中,未指定 host,因此该规则适用于通过指定 IP 地址的所有入站 HTTP 通信。 如果提供了 host(例如 foo.bar.com),则 rules 适用于该 host。
- 路径列表 paths(例如,/testpath),每个路径都有一个由 serviceName 和 servicePort 定义的关联后端。 在负载均衡器将流量定向到引用的服务之前,主机和路径都必须匹配传入请求的内容。
- backend(后端)是 Service 文档中所述的服务和端口名称的组合。 与规则的 host 和 path 匹配的对 Ingress 的 HTTP(和 HTTPS )请求将发送到列出的 backend。
通常在 Ingress 控制器中会配置 defaultBackend(默认后端),以服务于任何不符合规约中 path 的请求。
2. 部署Ingress环境
环境准备:https://kubernetes.github.io/ingress-nginx/deploy/
官方下载速度较慢:
不从官方下载,提前准备好需要的文件及镜像:
1)demploy.yml 文件
/root/ingress/deploy.yml
官方的文档 deploy.yml
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/cloud/deploy.yaml
2)镜像
镜像1:nginx-ingress-controller:0.33.0
镜像2:kube-webhook-certgen:v1.2.0)
3)部署
kubectl apply -f ingress/deploy.yaml
3. 创建Ingress
Ingress创建详解:https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
Ingress官方例子:https://kubernetes.github.io/ingress-nginx/examples/
准备: 创建两个服务:myservice与nginx-svc
1.创建service:myservice
# demo.yml
---
apiVersion: v1
kind: Service
metadata:
name: myservice
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo2
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels