### K8S四种访问方式
#### 1. ClusterIP
ClusterIP服务类型将Service暴露为Cluster内部的虚拟IP。这种服务只能在Cluster内部访问,无法从外部直接访问。
**步骤:**
1. 创建一个ClusterIP类型的Service
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ClusterIP
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
```
2. 部署应用程序并将其关联到Service
#### 2. NodePort
NodePort服务类型将Service暴露在每个Node的相同端口上。可以通过Node的IP地址和NodePort访问Service。
**步骤:**
1. 创建一个NodePort类型的Service
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
```
2. 部署应用程序并将其关联到Service
3. 通过任一Node的IP地址和NodePort访问Service
#### 3. LoadBalancer
LoadBalancer服务类型允许外部负载均衡器将流量路由到Kubernetes集群中的Service。
**步骤:**
1. 创建一个LoadBalancer类型的Service
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: LoadBalancer
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
```
2. 部署应用程序并将其关联到Service
3. 等待外部负载均衡器分配一个外部IP地址
4. 通过该外部IP地址访问Service
#### 4. Ingress
Ingress服务类型允许外部流量访问Kubernetes集群中的Service。它允许对HTTP和HTTPS流量进行路由。
**步骤:**
1. 部署Ingress控制器(如nginx-ingress)
2. 创建一个Ingress对象
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: my-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
```
3. 部署应用程序并将其关联到Service
4. 在DNS中设置域名解析到Ingress控制器的IP地址
5. 通过域名访问Service
通过以上示例代码和步骤,你可以在Kubernetes中使用ClusterIP、NodePort、LoadBalancer和Ingress这四种不同的访问方式来管理和访问你的应用程序。希望这篇文章能帮助你更好地理解Kubernetes中的访问方式。如果有任何问题,欢迎随时向我提问。祝你在学习K8S的路上一帆风顺!