# 服务部署(3): 使用 kubectl 启动服务(service)

经过 deployment，cloud_native_hello_py 项目的目录结构如下：

```bash
.
├── Dockerfile
├── README.md
├── k8s.deployment.yaml
└── src
    ├── main.py
    └── requirements.txt
```

在根目录下增加一个文件`k8s.service.yaml`，内容如下：

```yaml
apiVersion: v1
kind: Service
metadata:
  name: cloud-native-hello-py
spec:
  selector:
    app: cloud-native-hello-py
  ports:
    - protocol: TCP
      port: 1024
      targetPort: 1024
```

注意 targetPort 必须和 deployment 步骤里容器的导出端口一致


使用如下的命令来创建服务

```bash
kubectl create -f k8s.service.yaml
```

![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/service.png)
<br/>


对服务做下端口转发
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/port_forward.png)
<br/>


使用浏览器直接访问
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/it_works_html.png)
<br/>

HelloWorld! 恭喜你成功地在 K8S 上部署启动了一个 Python Flask 后端服务。

下面说法错误的是？

## 答案

kubectl 只能创建一个服务

## 选项

### A

service 可以配置将端口映射到 deployment 里配置的容器端口

### B

转发本机端口到服务端口后，本机可以直接访问服务

### C

服务配置里的 selector 配置了选择 pod 的策略

