本文使用Ingress暴露一个样例服务(tomcat) ,然后通过域名方式访问它。
部署样例服务
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deployment
labels:
app: tomcat
spec:
replicas: 1
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: tomcat:7.0.57-jre7
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tomcat
spec:
selector:
app: tomcat
ports:
- protocol: TCP
port: 8080
targetPort: 8080
部署Ingress
这条Ingress的规则是当HTTP Header中Host: tomcat.com
,转发至Service tomcat
.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: eureka-ingress
annotations:
# specify IngressClass
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "tomcat.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: tomcat
port:
number: 8080
添加/etc/hosts
文件
${your_master_ip} tomcat.com
查看Ingress Controller的部署端口
需要提前部署Ingress Controller,参考https://kubernetes.io/zh/docs/concepts/services-networking/ingress/
部署ingress-nginx控制器。
[root@k8snode1 ~]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.108.10.114 <none> 80:30390/TCP,443:32064/TCP 6h6m
ingress-nginx-controller-admission ClusterIP 10.100.32.25 <none> 443/TCP 6h6m
本例中是30390
,所以访问tomcat服务使用URL为:http://tomcat.com:30390/