文章目录
前言
Ingress 是 kubernetes API 中的标准资源类型之一,ingress 实现的功能是在应用层对客户端请求的 host 名称或请求的 URL 路径把请求转发到指定的 service 资源的规则,即用 于将 kubernetes 集群外部的请求资源转发之集群内部的 service,再被 service 转发之 pod 处理客户端的请求。
安装Ingress
Ingress 资源需要指定监听地址、请求的 host 和 URL 等配置,然后根据这些规则的匹 配机制将客户端的请求进行转发,这种能够为 ingress 配置资源监听并转发流量的组件称为 ingress 控制器(ingress controller),ingress controller 是 kubernetes 的一个附件,类似于 dashboard 或者 flannel 一样,需要单独部署。
yaml文件下载地址:
https://github.com/kubernetes/ingress-nginx/blob/cd151e3db8bd4f884511d229c2134e89f3c22a98/deploy/static/provider/baremetal/deploy.yaml
部署ingress-nginx,查看pod与service:
kubectl apply -f deploy.yaml
...
...
kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
ingress-nginx ingress-nginx-admission-create-nl8xw 0/1 Completed 0 8m10s
ingress-nginx ingress-nginx-admission-patch-fjjvt 0/1 Completed 0 8m10s
ingress-nginx ingress-nginx-controller-5bd986b4f9-b6znm 1/1 Running 0 8m10s
kubectl get svc -A
ingress-nginx ingress-nginx-controller NodePort 10.68.236.4 <none> 80:33646/TCP,443:32883/TCP 48m
ingress-nginx ingress-nginx-controller-admission ClusterIP 10.68.124.109 <none> 443/TCP 48m
Ingress 也起了NodePort服务,33646 对应80请求,32883 对应443请求。
部署应用服务
部署两个tomcat应用,对应的nodePort分别为30081和30082。并在各个webapps下创建目录与首页。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: myserver-tomcat-app1-deployment-label
name: myserver-tomcat-app1-deployment
namespace: myserver
spec:
replicas: 1
selector:
matchLabels:
app: myserver-tomcat-app1-selector
template:
metadata:
labels:
app: myserver-tomcat-app1-selector
spec:
containers:
- name: myserver-tomcat-app1-container
image: tomcat:7.0.94-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
protocol: TCP
name: http
---
kind: Service
apiVersion: v1
metadata:
labels:
app: myserver-tomcat-app1-service-label
name: myserver-tomcat-app1-service
namespace: myserver
spec:
type: NodePort
ports:
- name: http
port: 80
protocol