不忘初心,
牢记使命。

K8s之配置校验---Polaris(北极星)

2021-08-21 大聪明 0评论 155 0喜欢

K8s之配置校验---Polaris(北极星)

简介

Polaris是一款通过分析部署配置,从而发现集群中存在的问题的健康检查组件。当然,Polaris的目标可不仅仅只是发现问题,同时也提供避免问题的解决方案,确保集群处于健康状态。 Polaris 包含3个组件,分别实现了不同的功能:

  • Dashboard - 以图表的形式查看当前Kubernetes workloads的工作状态和优化点。
  • Webhook - 阻止在集群中安装不符合标准的应用
  • CLI - 检查本地的yaml文件,可结合CI/CD使用

Dashboard

Dashboard是polaris提供的可视化工具,可以查看Kubernetes workloads状态的概览以及优化点。也可以按类别、名称空间和工作负载查看。

安装

polaris支持kubectl, helm and local binary三种安装方式,这里使用Kubectl方式

官方安装示范链接:https://polaris.docs.fairwinds.com/dashboard/#installation

kubectl apply -f https://github.com/fairwindsops/polaris/releases/latest/download/dashboard.yaml
kubectl port-forward --namespace polaris svc/polaris-dashboard 8080:80

如果特别慢的话用我的镜像:

step1:镜像准备

[root@k8s-master ~]# docker pull quay.io/fairwinds/polaris:4.0
4.0: Pulling from fairwinds/polaris
540db60ca938: Pull complete 
09c1a43ef494: Pull complete 
15a6f35230e5: Pull complete 
62a16ff79a3e: Pull complete 
6f8c08425b62: Pull complete 
Digest: sha256:3e1e28742bb56c521f58db8ef4bfd056387aad095bb46ce20d1803ddd457db3a
Status: Downloaded newer image for quay.io/fairwinds/polaris:4.0
quay.io/fairwinds/polaris:4.0

[root@k8s-master ~]# docker tag 272dc6061cf0 harbor.liboer.top/library/polaris:v4.0
[root@k8s-master ~]# docker push harbor.liboer.top/library/polaris:v4.0

step2:yaml资源配置清单

# 记得把镜像地址改为自己的私有镜像仓库地址
http://mirrors.liboer.top/polaris/dashboard.yaml

step3:创建

[root@k8s-master ~]# kubectl apply -f http://mirrors.liboer.top/polaris/dashboard.yaml
namespace/polaris created
serviceaccount/polaris created
clusterrole.rbac.authorization.k8s.io/polaris created
clusterrolebinding.rbac.authorization.k8s.io/polaris-view created
clusterrolebinding.rbac.authorization.k8s.io/polaris created
service/polaris-dashboard created
deployment.apps/polaris-dashboard created
[root@k8s-master ~]# kubectl get pod,svc -n polaris
NAME                                   READY   STATUS    RESTARTS   AGE
pod/polaris-dashboard-5cd95648-9hdjf   1/1     Running   0          17m

NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/polaris-dashboard   ClusterIP   10.1.155.101   <none>        80/TCP    17m
[root@k8s-master ~]# kubectl port-forward --namespace polaris svc/polaris-dashboard 8080:80
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

服务暴露

现在只能在集群内部访问,如果像在外部使用,需要暴露端口到外边

[root@k8s-master ~]# kubectl get svc,pod -n polaris -o wide
NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE     SELECTOR
service/polaris-dashboard   ClusterIP   10.1.155.101   <none>        80/TCP    4h26m   app=polaris,component=dashboard

NAME                                   READY   STATUS    RESTARTS   AGE     IP           NODE         NOMINATED NODE   READINESS GATES
pod/polaris-dashboard-5cd95648-9hdjf   1/1     Running   0          4h26m   172.12.1.5   k8s-node02   <none>           <none>
[root@k8s-master ~]# kubectl edit svc polaris-dashboard -n polaris
error: services "polaris-dashboard" is invalid
error: services "polaris-dashboard" is invalid
service/polaris-dashboard edited
[root@k8s-master ~]# kubectl get svc,pod -n polaris -o wide
NAME                        TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE     SELECTOR
service/polaris-dashboard   NodePort   10.1.155.101   <none>        80:32765/TCP   4h30m   app=polaris,component=dashboard

NAME                                   READY   STATUS    RESTARTS   AGE     IP           NODE         NOMINATED NODE   READINESS GATES
pod/polaris-dashboard-5cd95648-9hdjf   1/1     Running   0          4h30m   172.12.1.5   k8s-node02   <none>           <none>

现在浏览器访问:http://k8s-master:32765/

image-20210708155829166

使用

Polaris仪表板是一种获取Kubernetes工作负载当前状态的简单可视概述的方法,以及可以改进的路线图。仪表板提供集群范围的概述以及按类别、命名空间和工作负载划分的结果。

image-20210708160913034

我们的默认标准在北极星是相当高的,所以不要惊讶,如果你的分数低于你的预期。Polaris的一个关键目标是设定一个高标准,并在默认情况下实现出色的配置。如果我们包含的默认值太严格,那么很容易将配置作为部署配置的一部分进行调整,以更好地适应您的工作负载。

Webhook

Polaris可以作为一个admission controller运行,作为一个validating webhook。它接受与仪表板相同的配置,并可以运行相同的验证。这个webhook将拒绝任何触发验证错误的workloads 。这表明了Polaris更大的目标,不仅仅是通过仪表板的可见性来鼓励更好的配置,而是通过这个webhook来实际执行它。Polaris不会修复workloads,只会阻止他们。

  • 使用和dashboard相同的配置
  • 阻止所有部署配置不通过的应用安装到集群
  • 不仅仅能够查看集群当前存在的缺陷,还能预防缺陷

安装

在集群中安装Webhook组件后,将会阻止不符合标准的应用部署在集群中。

https://polaris.docs.fairwinds.com/admission-controller/#installation

kubectl apply -f http://mirrors.liboer.top/polaris/webhook.yaml

CLI

在命令行上也可以使用Polaris来审计本地文件或正在运行的集群。这对于在CI/CD管道的基础设施代码上运行Polaris特别有帮助。如果Polaris给出的审计分数低于某个阈值,或者出现任何错误,可使用命令行标志来导致CI/CD失败。

  • 检查本地文件或正在运行的集群
  • 可以结合CI/CD,部署配置校验不通过时直接让CI/CD失败

发表评论 取消回复

电子邮件地址不会被公开。

请输入正确格式的qq邮箱
请输入以http或https开头的URL,格式如:https://libo_sober.top