Kubernetes通过ingress暴露服务访问
1、先在k8s集群上部署一个tomcat应用
1.我先写了一个tomcat的tomcat-deployment.yml资源文件
内容如图
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat
labels:
app: tomcat
spec:
replicas: 1
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: tomcat:latest
ports:
- containerPort: 8080

2、2.通过tomcat-deployment.yml部署一个tomcat应用
输入kubectl create -f tomcat-deployment.yml --namespace=default创建pod

3、创建service
1.创建tomcat-service.yml 文件
apiVersion: v1
kind: Service
metadata:
name: tomcat
namespace: default
labels:
app: tomcat
spec:
ports:
- name: http
port: 8080
targetPort: 8080
protocol: TCP
selector:
app: tomcat

4、2.输入kubectl create -f tomcat-service.yml 创建service

5、测试service
输入curl 10.233.35.250:8080
语法: curl service 的ip:端口

6、通过ingrass暴露服务至外网
1.创建tomcat-ingress.yml 资源文件
文件内容如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
app: tomcat
name: tomcat
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: tomcat.k8s-dev.com
http:
paths:
- path: /
backend:
serviceName: tomcat
servicePort: 8080


7、2.创建ingress
输入kubectl create -f tomcat-ingress.yml 回车
输入kubectl get ing -o wide 回车

8、在外部电脑访问tomcat服务
浏览器输入服务地址访问,如图
发现无法访问,这需要在这台电脑上配置hosts

9、在要访问服务的机器上配置hosts
以windows为例
找到hosts文件

10、编辑hosts文件加入如下内容
k8s任意一台master的ip tomcat的服务域名
注:通过输入kubectl get node -o wide 查看k8s master的ip


11、配置好后保存,再次访问tomcat服务的域名
ok,成功
