kubernetes Ingess 是有 2 部分组成, Ingress Controller 和 Ingress 服务组成, 常用的 Ingress Controller 是 ingress-nginx, 工作的原理是:
Ingress Controller 会动态感知集群中的 Ingress 的规则变化, 然后读取, 动态生成 Nginx 的配置文件, 最后注入到运行 nginx 的 pod 的中, 然后会自动 reload, 配置生效.
用 kubernetes Ingress 是由于它是 7 层调度, 可以直接卸载 https 会话, 代理的后端的 pod 可以直接使用明文的 http 协议.
而 Service NodePort 得类型, 是 4 层得调度, 做不到这点, 然而现在 https 是一种趋势, 所以在 kubernetes 对外暴露服务得时候我们还是要选择 Ingress.
下面我们来看下 Ingress 得部署:
原理图
1. 创建后端容器和 service
首先创建一个文件夹专门放置 Igress 得 YAML 得文件, mkdir ingress
VIM myapp.YAML
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: myapp
- spec:
- replicas: 3
- selector:
- matchLabels:
- App: myapp
- template:
- metadata:
- labels:
- App: myapp
- spec:
- containers:
- - name: myapp-ding
- image: ikubernetes/myapp:v2
- ---
- apiVersion: v1
- kind: Service
- metadata:
- name: myapp
- #等会 ingress 就靠这个来匹配
- spec:
- selector:
- App: myapp
- type: ClusterIP
- ports:
- - port: 80
- targetPort: 80
2. 配置 ingress 的配置文件
- apiVersion: extensions/v1beta1
- kind: Ingress
- metadata:
- name: ingress-ding
- namespace: default
- annotations:
- kubernetes.io/ingress.class: "nginx"
- spec:
- rules:
- - host: www.yang.com
- #虚拟机主机域名
- http:
- paths:
- - path:
- backend:
- serviceName: myapp
- #代理后端的 service 的 name
- servicePort: 80
- #后端 service 的端口
来源: http://www.bubuko.com/infodetail-3376981.html