# Kubernetes (K8S) 脚本部署

## 1. 什么是Kubernetes脚本部署?
在Kubernetes中,我们通常使用YAML文件来定义应用程序的部署、服务、配置等。Kubernetes脚本部署就是通过编写这些YAML文件来自动化部署和管理应用程序,而不需要手动在Kubernetes集群中执行多个命令来完成。

## 2. K8S脚本部署流程

| 步骤 | 描述 |
|------|------|
| 1. 创建Deployment | 创建一个Deployment对象,定义应用程序的部署 |
| 2. 创建Service | 创建一个Service对象,定义应用程序的服务地址和端口 |
| 3. 应用配置 | 可选:创建ConfigMap或Secret对象,用于存储应用程序的配置信息 |
| 4. 应用部署 | 使用kubectl apply命令部署应用程序 |

## 3. K8S脚本部署-步骤详解

### 步骤1:创建Deployment

在YAML文件中定义Deployment对象,描述要部署的应用程序信息。

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

- apiVersion: 定义Kubernetes API的版本
- kind: 定义对象类型,这里是Deployment
- replicas: 定义副本数量
- selector: 定义标签选择器
- template: 定义Pod的模板
- containers: 定义容器的镜像和端口等信息

### 步骤2:创建Service

在YAML文件中定义Service对象,暴露应用程序的服务。

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

- apiVersion: 定义Kubernetes API的版本
- kind: 定义对象类型,这里是Service
- selector: 定义标签选择器,与Deployment中的匹配
- ports: 定义服务的端口映射
- type: 定义服务类型为NodePort,暴露端口到集群外部

### 步骤3:应用配置(可选)

可选:在YAML文件中定义ConfigMap或Secret对象,用于存储应用程序的配置信息。

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
database_url: "mysql://user:password@hostname:port/dbname"
```

### 步骤4:应用部署

使用kubectl apply命令部署应用程序。

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

以上代码示例为Kubernetes脚本部署的基本步骤和操作,通过编写YAML文件来定义应用的部署、服务和配置信息,然后使用kubectl apply命令来应用这些配置。这样可以实现应用程序的自动化部署和管理,提高开发、部署效率。

希望以上内容可以帮助您了解Kubernetes脚本部署的流程和操作,祝您学习顺利!