create_deployment.md 1.9 KB
Newer Older
F
feilong 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
# 服务部署(1): 使用 kubectl 部署(deployment)

回顾我们在 “使用Dockerfile制作镜像” 一节里制作过的 python docker 镜像程序。镜像推送到镜像仓库的tag名字是`fanfeilong/cloud_native_hello_py`,源码结构如下:

```bash

├── .dockerignore
├── .gitignore
├── Dockerfile
├── README.md
└── src
    ├── main.py
    └── requirements.txt
```


我们在根目录下创建一个 k8s 的部署配置文件,文件是 yaml 格式,文件名为`k8s_python_sample_code.deployment.yml`,内容如下,注意`name`字段不能是下划线命名风格:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cloud-native-hello-py
  labels:
    app: cloud-native-hello-py
spec:
  replicas: 3
  selector:
    matchLabels:
      app: cloud-native-hello-py
  template:
    metadata:
      labels:
        app: cloud-native-hello-py
    spec:
      containers:
      - name: cloud-native-hello-py
        image: fanfeilong/cloud_native_hello_py
        ports:
        - containerPort: 1024
```

通过一组操作来部署和查看状态
* 使用命令 `kubectl create -f k8s.deployment.yaml` 部署到 k8s 集群,“部署” 本身被当一种资源创建过程
* 使用命令 `kubectl get deployments` 查看部署情况
* 使用命令`kubectl rollout status deployment/cloud-native-hello-py`查看状态。

![](./img/deployment.png)


以下说法错误的是?

## 答案

k8s.deployment.yaml 里不需要指定目标部署 Python 服务的 docker 镜像名字

## 选项

### A

kubectl 对一种资源的操作,常见的包含:创建、查看列表、获取状态三种

### B

使用 yaml 配置部署信息,使用`kubectl create -f` 命令创建资源,这就是 k8s 的声明式 api 的做法 

### C

deployment 的配置文件yaml里,`name` 字段不能带下划线风格

### D

containerPort: 1024 用来暴露容器导出端口