Kubernetes (简称K8s) 是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。在K8s中,部署服务后我们需要访问这些服务。下面,我将为你介绍在K8s中如何部署服务以及如何访问这些服务。

整体流程如下:

| 步骤 | 操作 |
|-------|-------------|
| 1 |创建一个Deployment|
| 2 |创建一个Service|
| 3 |通过Service访问Deployment|

步骤1:创建一个Deployment
首先,我们需要创建一个Deployment来定义我们的应用程序的运行参数以及副本数量等。下面是一个示例Deployment的yaml配置文件:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:v1.0.0
ports:
- containerPort: 8080
```

这个配置文件定义了一个名为my-app-deployment的Deployment,其中有3个Pod副本,使用label选择器选择匹配app=my-app的Pod。Pod中运行了一个名为my-app的容器,容器使用了my-app:v1.0.0镜像,并在8080端口上监听请求。

使用kubectl命令来创建Deployment:

```bash
kubectl apply -f deployment.yaml
```

步骤2:创建一个Service
在K8s中,Service用于暴露Deployment内的Pod给其他的Pod或外部网络访问。下面是一个示例Service的yaml配置文件:

```yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
```

这个配置文件定义了一个名为my-app-service的Service,通过selector选择器选择匹配app=my-app的Pod作为后端服务。Service使用80端口,并将请求转发到Pod的8080端口。type为LoadBalancer,表示将外部请求负载均衡到后端的Pod。

使用kubectl命令来创建Service:

```bash
kubectl apply -f service.yaml
```

步骤3:通过Service访问Deployment
现在,我们的Deployment和Service都已经部署好了。我们可以使用Service的名称来访问其中的Pod。

使用kubectl命令来获取Service的访问地址:

```bash
kubectl get service my-app-service
```

上述命令将会返回Service的相关信息,其中包括EXTERNAL-IP字段。通过该字段,我们可以访问到部署在K8s集群中的服务。

示例代码如下:

```python
import requests

url = 'http:///endpoint' # 将替换为实际的Service访问地址

response = requests.get(url)

print(response.text)
```

在上面的代码中,我们使用requests库发起HTTP请求来访问Service的地址,将替换为实际的Service访问地址。得到的response就是从服务上返回的响应内容。

现在,你已经知道了如何在K8s中部署服务以及如何访问这些服务了。通过创建Deployment和Service,我们可以灵活地管理和访问我们的应用程序。希望这篇文章可以帮助你理解如何实现K8s部署服务的访问。