k8s业务怎么对外暴露
时间: 2023-11-20 11:56:24 浏览: 160
k8s上部署harbor并暴露访问
在Kubernetes中,可以通过Service和Ingress来将业务对外暴露。其中,Service是一种抽象,定义了一组Pod的访问方式,而Ingress则是对Service的进一步抽象,可以将多个Service暴露在同一个IP和端口下,并提供负载均衡和路由等功能。
具体实现步骤如下:
1. 创建Deployment,定义Pod的副本数和容器镜像等信息。
2. 创建Service,将Deployment中的Pod暴露出来,定义Service的类型、端口和访问方式等信息。
3. 创建Ingress,将Service暴露出来,定义Ingress的规则、路径和后端Service等信息。
4. 配置Ingress Controller,将Ingress与实际的负载均衡器或代理服务器绑定,实现对外访问。
下面是一个示例YAML文件,演示了如何通过Ingress将两个Service暴露出来,并提供不同的路径和主机名访问:
```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
image: myapp:v1
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
selector:
app: myapp
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: mydb
spec:
selector:
app: mydb
ports:
- name: mysql
port: 3306
targetPort: 3306
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /app
pathType: Prefix
backend:
service:
name: myapp
port:
name: http
- host: mydb.example.com
http:
paths:
- path: /db
pathType: Prefix
backend:
service:
name: mydb
port:
name: mysql
```
阅读全文