### 什么是 K8S

K8S 是 Kubernetes 的缩写,是一个开源的容器编排引擎,由 Google 设计开发,用于管理容器化的应用程序。K8S 可以帮助我们简化容器的部署、扩展和管理,使得我们可以更轻松地应对复杂的容器化应用场景。下面我将向你介绍 K8S 是如何工作的,以及如何使用它来管理容器。

### K8S工作流程

以下是 K8S 的工作流程,你可以参考图表来理解每个步骤的作用:

| 步骤 | 描述 |
| -------- | ----------- |
| 1.创建 Deployment | 创建一个 Deployment 对象来指定需要部署的容器应用程序 |
| 2.创建 Pod | Deployment 会创建一个或多个 Pod 来运行容器 |
| 3.创建 Service | 创建一个 Service 来暴露 Pod 供外部访问 |
| 4.扩展应用 | 可以通过调整 Replica 数量来扩展应用 |
| 5.更新应用 | 可以通过更新 Deployment 来更新应用 |

### K8S 实践示例

#### 步骤 1:创建 Deployment

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```

上面的代码是一个 Deployment 的示例,它会创建一个名为 "nginx-deployment" 的 Deployment 对象,并指定了需要运行的容器镜像为 "nginx:latest"。

#### 步骤2:创建 Service

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

上面的代码是一个 Service 的示例,它会创建一个名为 "nginx-service" 的 Service 对象,用来暴露 Deployment 创建的 Pod,以便外部访问。

#### 步骤3:扩展应用

```bash
kubectl scale deployment nginx-deployment --replicas=5
```

上面的命令会将 "nginx-deployment" 的副本数扩展至 5 个,从而扩展应用规模。

#### 步骤4:更新应用

```bash
kubectl set image deployment/nginx-deployment nginx=nginx:1.17
```

上面的命令会将 "nginx-deployment" 中名为 "nginx" 的容器镜像更新为 "nginx:1.17" 版本,从而更新应用程序。

通过以上示例,你应该对 Kubernetes 的基本工作原理有了一定的了解,希會可以使用 K8S 来更高效地管理容器化应用程序。祝你学习顺利!