本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

Shell-operator 是一个用于在 Kubernetes 集群中运行事件驱动脚本的工具。
该操作器不同于 prometheus-operator 或 kafka-operator 这类特定软件产品的操作器。Shell-operator 作为 Kubernetes 集群事件与 shell 脚本之间的集成层,将脚本视为由事件触发的钩子。可以将其理解为面向脚本的 operator-sdk。
Shell-operator 可用作更高级的 Addon-operator 的基础,后者支持 helm 图表和值存储。
Shell-operator 提供:
需具备 Kubernetes 集群,且 kubectl 已配置为与集群通信。
在集群中设置 Shell-operator 的步骤:
钩子是一种脚本,当使用 --config 选项执行时,会返回 JSON 格式的配置。了解更多关于钩子的信息。
创建一个监控所有命名空间中 Pod 的小型操作器,当有新 Pod 时记录其名称。
使用 "onKubernetesEvent" 绑定告知 shell-operator 要监控的对象。创建 pods-hook.sh 文件,内容如下:
#!/usr/bin/env bash if [[ $1 == "--config" ]] ; then cat <<EOF {"onKubernetesEvent": [ {"kind":"Pod", "event":["add"] } ]} EOF else podName=$(jq -r .[0].resourceName $BINDING_CONTEXT_PATH) echo "Pod '${podName}' added" fi
使 pods-hook.sh 可执行:
chmod +x pods-hook.sh
可使用预构建镜像 flant/shell-operator:latest(包含 bash、python、kubectl、jq 和 shell-operator 二进制文件)构建自定义镜像。只需在 Dockerfile 中将钩子添加到 /hooks 目录。
在 pods-hook.sh 所在目录创建以下 Dockerfile:
FROM flant/shell-operator:latest ADD pods-hook.sh /hooks
构建镜像(根据 Docker 仓库修改镜像标签):
docker build -t "registry.mycompany.com/shell-operator:monitor-pods" .
将镜像推送到 Kubernetes 集群可访问的 Docker 仓库:
docker push registry.mycompany.com/shell-operator:monitor-pods
需监控所有命名空间的 Pod,需为 shell-operator 创建特定 RBAC 定义:
kubectl create namespace example-monitor-pods && kubectl create serviceaccount monitor-pods-acc \ --namespace example-monitor-pods && kubectl create clusterrole monitor-pods --verb=get,watch,list --resource=pods && kubectl create clusterrolebinding monitor-pods \ --clusterrole=monitor-pods \ --serviceaccount=example-monitor-pods:monitor-pods-acc
Shell-operator 可部署为 Pod。创建 shell-operator-pod.yaml 文件,内容如下:
apiVersion: v1 kind: Pod metadata: name: shell-operator spec: containers: - name: shell-operator image: registry.mycompany.com/shell-operator:monitor-pods imagePullPolicy: Always serviceAccountName: monitor-pods-acc
应用 shell-operator-pod.yaml 文件启动 shell-operator:
kubectl -n example-monitor-pods apply -f shell-operator-pod.yaml
例如,部署 kubernetes-dashboard 触发 onKuberneteEvent:
kubectl apply -f [***]
运行 kubectl -n example-monitor-pods logs po/shell-operator,可看到钩子打印 dashboard Pod 名称:
... INFO : QUEUE add TASK_HOOK_RUN@KUBE_EVENTS pods-hook.sh INFO : TASK_RUN HookRun@KUBE_EVENTS pods-hook.sh INFO : Running hook 'pods-hook.sh' binding 'KUBE_EVENTS' ... Pod 'kubernetes-dashboard-769df5545f-99xsb' added ...
删除创建的对象:
kubectl delete ns example-monitor-pods && kubectl delete clusterrole monitor-pods && kubectl delete clusterrolebinding monitor-pods
此示例也可在 /examples 目录中找到:monitor-pods。
此绑定仅包含一个参数:执行顺序。启动时加载钩子,然后按参数定义的顺序执行带有 onStartup 绑定的钩子。了解更多关于 onStartup 绑定的信息。
示例 hook --config:
{"onStartup":10}
此绑定用于定期运行钩子。调度可精确到秒级。了解更多关于 schedule 绑定的信息。
包含 2 个调度的 hook --config 示例:
{ "schedule": [ {"name":"每 10 分钟", "schedule":"0 */10 * * * *", "allowFailure":true }, {"name":"每周一 8:05", "schedule":"0 5 8 * * 1" } ] }
此绑定定义 Shell-operator 要监控的 Kubernetes 对象子集,以及用于过滤对象属性的 jq 表达式。了解更多关于 onKubernetesEvent 绑定的信息。
注意:目前不支持自定义资源监控,参见 issue #14。
hook --config 示例:
{ "onKubernetesEvent": [ {"name":"命名空间标签变化时执行", "kind": "namespace", "event":["update"], "jqFilter":".metadata.labels" }] }
Shell-operator 提供 /metrics 端点。更多信息参见 METRICS 文档。
更多示例可在 examples 目录中找到。
Apache License 2.0,参见 LICENSE。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429