## 实现K8S Dashboard对外访问的步骤及代码示例

在Kubernetes集群中,Dashboard是一个Web UI,可用于管理集群中的各种资源。默认情况下,Dashboard只能在集群内部访问,但有时候我们希望将其暴露到外部以方便使用。下面我将介绍如何实现K8S Dashboard对外访问的步骤以及相应的代码示例。

### 步骤

| 步骤 | 操作 |
| ---- | ---- |
| 1 | 部署Dashboard |
| 2 | 创建Service访问Dashboard |
| 3 | 创建Ingress暴露Dashboard |

### 详细操作及代码示例

#### 步骤1:部署Dashboard

首先,我们需要在Kubernetes集群中部署Dashboard。可以通过以下命令来进行部署:

```bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
```

该命令会从Dashboard官方提供的文件中下载所需资源并部署Dashboard到集群中。

#### 步骤2:创建Service访问Dashboard

接下来,我们需要创建一个Service来实现在集群内部访问Dashboard。可以使用以下YAML文件创建Service:

```yaml
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
k8s-app: kubernetes-dashboard
```

将上述YAML代码保存为`dashboard-service.yaml`文件,并执行以下命令来创建Service:

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

#### 步骤3:创建Ingress暴露Dashboard

最后,我们可以通过创建Ingress对象来暴露Dashboard到集群外部。以下是一个示例Ingress配置:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kubernetes-dashboard
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: dashboard.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard
port:
number: 80
```

将上述YAML代码保存为`dashboard-ingress.yaml`文件,并执行以下命令来创建Ingress:

```bash
kubectl apply -f dashboard-ingress.yaml
```

现在,你就可以通过`dashboard.example.com`来访问K8S Dashboard了。

通过以上步骤,你已经成功实现了K8S Dashboard对外访问的操作。希望这篇文章对你有所帮助,如有疑问或更多需求,欢迎留言讨论。祝你学习顺利!