我们正将名称从 k8dash 更改为 Skooner!在我们更新文档和代码库以反映此变更期间,请耐心等待。如果您之前安装了 k8dash,需要从集群中卸载它并安装 Skooner。大多数情况下,可通过运行以下 kubectl 命令完成:
kubectl delete deployment,service k8dash
Skooner 是管理 Kubernetes 集群最简单的方式。Skooner 现已成为云原生计算基金会(Cloud Native Computing Foundation)的沙箱项目!
(返回目录)
使用如下方式部署 Skooner……
[!NOTE] 切勿信任从互联网下载的文件。在运行以下脚本前,请务必检查 kubernetes-skooner.yaml 的内容。
kubectl apply -f https://raw.githubusercontent.com/skooner-k8s/skooner/master/kubernetes-skooner.yaml
要访问 Skooner,必须使其可公开访问。如果已设置入口服务器(ingress server),可通过添加如下路由实现:
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: skooner
namespace: kube-system
spec:
rules:
- host: skooner.example.com
http:
paths:
- path: /
backend:
service:
name: skooner
port:
number: 80
pathType: ImplementationSpecific
注意:Kubernetes v1.22+ 要求使用 networking.k8s.io/v1 版本的 Ingress;extensions/v1beta1 版本的 Ingress 在 v1.14+ 中已弃用,并在 v1.22+ 中不可用。
(返回目录)
遗憾的是,无法使用 kubectl proxy 访问 Skooner。根据此评论,kubectl proxy 在代理请求时会剥离 Authorization 头。
这是预期行为。通过 API 服务器进行“代理”不会提供标准的代理行为(端到端保留 Authorization 头),因为该 API 并非用作标准代理
(返回目录)
登录仪表板有多种方式:服务账户令牌(Service Account Token)、OIDC 和 NodePort。
第一种(也是最简单的)方式是创建专用服务账户。在命令行中执行:
# 在当前命名空间中创建服务账户(假设为 default)
kubectl create serviceaccount skooner-sa
# 为该服务账户授予集群管理员权限
kubectl create clusterrolebinding skooner-sa --clusterrole=cluster-admin --serviceaccount=default:skooner-sa
# 适用于 Kubernetes v1.21 或更低版本
# 查找为服务账户创建的包含令牌的密钥
kubectl get secrets
# 显示密钥内容以提取令牌
kubectl describe secret skooner-sa-token-xxxxx
# 适用于 Kubernetes v1.22 或更高版本
kubectl create token skooner-sa
从密钥中复制令牌(token)值,并在登录界面输入以访问仪表板。
Skooner 简化了 OpenID Connect 身份验证的使用。假设您的集群已配置为使用 OIDC,只需创建包含凭据的密钥并应用 kubernetes-skooner-oidc.yaml 即可。
要了解有关为集群配置 OIDC 的更多信息,请查看以下优质链接:
您可以使用如下脚本部署支持 OIDC 的 Skooner……
[!NOTE] 切勿信任从互联网下载的文件。在运行以下脚本前,请务必检查 kubernetes-skooner-oidc.yaml 的内容。
OIDC_URL=
OIDC_ID=
OIDC_SECRET=
kubectl create secret -n kube-system generic skooner \
--from-literal=url=$OIDC_URL \
--from-literal=id=$OIDC_ID \
--from-literal=secret=$OIDC_SECRET
kubectl apply -f https://raw.githubusercontent.com/skooner-k8s/skooner/master/kubernetes-skooner-oidc.yaml
此外,您可以通过以下环境变量提供其他 OIDC 选项:
OIDC_SCOPES:默认值为 openid email,但也可添加其他作用域,例如 OIDC_SCOPES="openid email groups"OIDC_METADATA:Skooner 使用优秀的 node-openid-client 模块。OIDC_METADATA 接受 JSON 字符串并将其传递给 Client 构造函数。文档参见此处。例如:OIDC_METADATA='{"token_endpoint_auth_method":"client_secret_post"}如果未设置入口服务器,可使用 kubernetes-skooner-nodeport.yaml 中配置的 NodePort 服务。这在创建单节点主节点或希望快速启动运行时非常理想。
这会将 Skooner 的 4654 端口映射到运行节点上随机选择的端口。可通过以下命令查看分配的端口:
$ kubectl get svc --namespace=kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
skooner NodePort 10.107.107.62 4654:32565/TCP 1m
您需要:
minikube start --driver=dockerminikube start --driver=docker
(返回目录)
要运行服务器,请从/server目录运行npm i以安装依赖项,然后运行npm start以启动服务器。该服务器是一个简单的express.js服务器,主要负责将请求代理到Kubernetes API服务器。
npm i
/server
npm start
在开发过程中,服务器将使用~/.kube/config中配置的内容来连接目标集群。例如,如果您使用minikube,可以运行kubectl config set-context minikube来正确设置~/.kube/config。
~/.kube/config
kubectl config set-context minikube
~/.kube/config
客户端是一个React应用程序(使用TypeScript),几乎没有其他依赖项。
要运行客户端,请打开一个新的终端选项卡并导航到/client目录,运行npm i,然后运行npm start。这将打开一个浏览器窗口,显示您的本地Skooner仪表板。如果一切编译正确,它将加载网站,然后会弹出错误消息:Unhandled Rejection (Error): Api request error: Forbidden....。该错误消息的右上角有一个“X”按钮可以关闭该消息。关闭后,您应该会看到可以输入令牌的UI。
/client
npm i
npm start
Unhandled Rejection (Error): Api request error: Forbidden...
(返回目录)
OIDC_URL=https://{keycloak_domain}/realms/foo/.well-known/openid-configuration
$OIDC_ID,使用OIDC_ID={client_id}$OIDC_ID
OIDC_ID={client_id}
$OIDC_SECRET(您需要启用“Client authentication”切换;对于旧版本的Keycloak,应将访问类型切换为“confidential”)$OIDC_SECRET
kube-system):kube-system
kubectl create secret generic skooner \
--from-literal=url=$OIDC_URL \
--from-literal=id=$OIDC_ID \
--from-literal=secret=$OIDC_SECRET \
--namespace=kube-system
kubectl apply -f https://raw.githubusercontent.com/skooner-k8s/skooner/master/kubernetes-skooner-oidc.yaml
kubectl rollout status deploy/skooner --namespace=kube-system确保Skooner正在运行。如果没有,请通过kubectl describe pod skooner --namespace=kube-system查看日志以报告错误kubectl rollout status deploy/skooner --namespace=kube-system
kubectl describe pod skooner --namespace=kube-system
provision/keycloak/skooner-ingress.yaml作为示例provision/keycloak/skooner-ingress.yaml
User \"system:anonymous\" cannot list resource \"selfsubjectrulesreviews\" in API group \"authorization.k8s.io\" at the cluster scope"
provision/keycloak/skooner-oidc-patch.yaml作为示例provision/keycloak/skooner-oidc-patch.yaml
kubectl logs deploy/skooner --namespace=kube-system检查日志。请注意,RequestError: connect ECONNREFUSED可能表示配置问题而非Skooner的问题。kubectl logs deploy/skooner --namespace=kube-system
RequestError: connect ECONNREFUSED
Apache License 2.0
(返回目录)
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务