Kubernetes可观测性、监控与安全指南
立即解锁
发布时间: 2025-08-25 02:12:35 阅读量: 2 订阅数: 6 

### Kubernetes 可观测性、监控与安全配置指南
#### 1. 准备工作
若要执行后续操作,需要在 AWS 或 GCP 上部署一个可用的 Kubernetes 集群,目前暂不支持其他云提供商。在执行后续命令前,需安装 `kubectl` 和 `helm`。
#### 2. 安装 Kubecost
Kubecost 可创建当前和历史 Kubernetes 支出的资源粒度模型,用于监控资源分配和成本透明化。安装步骤如下:
1. 将 Kubecost 图表仓库添加到本地 Helm 仓库列表:
```bash
$ helm repo add kubecost https://kubecost.github.io/cost-analyzer/
```
2. 使用 Helm 安装命令将 Kubecost 安装到 `kubecost` 命名空间:
```bash
$ helm install kubecost/cost-analyzer --namespace kubecost --name kubecost --set kubecostToken="dGVzdEB0ZXN0LmNvbQ==xm343yadf98"
```
3. 验证所有 Pod 是否正在运行:
```bash
$ kubectl get pods -nkubecost
```
若已有 Prometheus 部署,`node-exporter` Pod 可能会处于 `Pending` 模式,此时需为 Kubecost 使用不同端口进行部署。
#### 3. 访问 Kubecost 仪表盘
按以下步骤访问 Kubecost 仪表盘,实时监控 Kubernetes 资源及其成本:
1. 获取 `kubecost` 命名空间中的服务列表:
```bash
$ kubectl get svc -nkubecost
```
2. 使用 `kubectl port-forward` 命令创建端口转发,将本地端口 9090 转发到 Kubecost 成本分析器 Pod:
```bash
$ kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090
```
也可使用 `kubectl edit svc kubecost-cost-analyzer -nkubecost` 命令修改 `kubecost-cost-analyzer` 服务,将服务类型从 `ClusterIP` 更改为 `LoadBalancer`,通过云负载均衡器将服务暴露到外部。
3. 在 Web 浏览器中打开地址 `http://localhost:9090`(若使用 `LoadBalancer`,则打开外部 IP),将看到 Kubecost 登录页面。
4. 可通过添加额外的 Kubecost 端点来扩展仪表盘,从单个仪表盘监控多个集群。若有多个集群,点击“添加新集群”图标并添加其他集群的端点 URL。
#### 4. 监控 Kubernetes 资源成本分配
按以下步骤使用 Kubecost 监控与 Kubernetes 相关的云支出并查找可能的节省建议:
1. 按照“访问 Kubecost 仪表盘”的步骤访问仪表盘,点击仪表盘上的集群名称以查看详细摘要,此视图将显示每月成本和集群在空闲资源方面的效率。
2. 点击“实时资产”按钮,此视图显示与当前云提供商相关的实时成本。
3. 点击“分配”菜单,此视图显示当前命名空间中的累积成本,可应用范围过滤器获取所选命名空间中资源的每日、每周、每月或自定义范围成本。
4. 点击“节省”菜单,此菜单中的信息非常重要,可指出可能的优化步骤。例如,若有两个未充分利用的节点(利用率低于 60%),可通过缩减集群规模来节省成本。点击每个节省类别以了解实现此处显示的节省率所需采取的操作。
5. 点击“健康”菜单,此视图显示可靠性和集群健康风险评估。
6. 禁用“显示所有”选项以列出需要关注的问题。
7. 点击“通知”菜单,可指定如何处理通知。若有 Slack 频道,可点击“添加”按钮将通知转发到该频道;否则,可选择电子邮件通知。
#### 5. 使用 RBAC 强化集群安全性
在 Kubernetes 这样的复杂系统中,授权机制用于设置谁可以对集群资源进行哪些更改和操作。基于角色的访问控制(RBAC)是高度集成到 Kubernetes 中的机制,可授予用户和应用对 Kubernetes API 的细粒度访问权限。
##### 5.1 准备工作
确保有一个启用 RBAC 的 Kubernetes 集群(自 Kubernetes 1.6 起,RBAC 默认启用),并已配置好 `kubectl` 和 `helm` 以管理集群资源。创建私钥需要安装 `openssl` 工具。克隆 `k8sdevopscookbook/src` 仓库到工作站:
```bash
$ git clone https://github.com/k8sdevopscookbook/src.git
$ cd src/chapter9/rbac
```
若 RBAC 因任何原因被禁用,可使用 `--authorization-mode=RBAC` 启动 API 服务器来启用它。
##### 5.2 查看默认角色
1. 查看默认集群角色:
```bash
$ kubectl get clusterroles
$ kubectl get clusterrolebindings
```
2. 查看 Kubernetes 拥有的系统角色之一,了解其用途和限制:
```bash
$ kubectl get clusterroles system:node -oyaml
```
3. 查看默认面向用户的角色:
```bash
$ kubectl get clusterroles | grep -v '^system'
```
4. 查看默认集群绑定 `cluster-admin`:
```bash
$ kubectl get clusterrolebindings/cluster-admin -o yaml
```
##### 5.3 创建用户账户
1. 为示例用户创建私钥:
```bash
$ openssl genrsa -out user3445.key 2048
```
2. 使用创建的私钥创建证书签名请求(CSR):
```bash
$ openssl req -new -key user3445.key \
-out user3445.csr \
```
0
0
复制全文
相关推荐









