在Kubernetes(K8S)集群中安装宝塔面板(BT panel)是一项常见的任务,宝塔面板是一款用户友好且功能强大的服务器管理工具,可以帮助用户更方便地管理服务器和网站。

下面就是K8S中安装宝塔面板的步骤及相关代码示例:

### 步骤概览

| 步骤 | 操作 |
| ------ | ------ |
| 1 | 创建宝塔面板的服务 |
| 2 | 创建宝塔面板的持久化存储 |
| 3 | 部署宝塔面板的Pod |

### 1. 创建宝塔面板的服务

首先,在Kubernetes环境中创建宝塔面板的Service,使其可以被其他组件访问。

```yaml
apiVersion: v1
kind: Service
metadata:
name: baota-service
spec:
selector:
app: baota
ports:
- port: 8888
targetPort: 8888
```

解释:
- `metadata.name`:定义Service的名称为`baota-service`。
- `spec.selector`:指定Service关联的标签为`app: baota`,与后面Pod定义中的标签对应。
- `spec.ports`:定义Service对外暴露的端口为8888,转发流量至Pod的8888端口。

### 2. 创建宝塔面板的持久化存储

接下来,我们需要为宝塔面板创建一个持久化存储,以确保数据的持久性。

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: baota-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/baota
```

解释:
- `metadata.name`:定义PersistentVolume的名称为`baota-pv`。
- `spec.capacity`:指定存储容量为10Gi。
- `spec.accessModes`:指定存储访问模式为ReadWriteOnce,即单节点读写。
- `spec.hostPath`:指定PersistentVolume的存储路径为`/data/baota`。

### 3. 部署宝塔面板的Pod

最后一步是部署宝塔面板的Pod,并挂载之前创建的持久化存储。

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: baota-deployment
spec:
replicas: 1
selector:
matchLabels:
app: baota
template:
metadata:
labels:
app: baota
spec:
containers:
- name: baota
image: baota/bt-panel
ports:
- containerPort: 8888
volumeMounts:
- mountPath: /www/wwwroot
name: baota-storage
volumes:
- name: baota-storage
persistentVolumeClaim:
claimName: baota-pvc
```

解释:
- `metadata.name`:定义Deployment的名称为`baota-deployment`。
- `spec.replicas`:指定Pod副本数为1。
- `spec.template.spec.containers`:定义Pod中的容器镜像为`baota/bt-panel`,并暴露容器的8888端口。
- `spec.template.spec.volumes`:定义Pod挂载的持久化存储为之前创建的`baota-pvc`。

通过以上步骤,我们成功在Kubernetes集群中安装了宝塔面板,并且保证了数据的持久性。希望以上内容能帮助您顺利安装宝塔面板并管理您的服务器和网站。