Kubernetes是一种流行的容器编排工具,提供了多种访问方式,以便对容器应用程序进行访问和管理。在Kubernetes中,有四种主要的访问方式,包括ClusterIP、NodePort、LoadBalancer和Ingress。接下来,我将为你介绍这四种访问方式的使用方法和示例代码。

### 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的路上一帆风顺!