
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本仓库已迁移至上游:https://github.com/apache/incubator-openwhisk-deploy-openshift
 wsk property set --auth $AUTH_SECRET --apihost $(oc get route/openwhisk --template="{{.spec.host}}")
这将配置wsk使用你的OpenWhisk。使用-i选项避免nginx服务中自签名证书触发的验证错误。
bashwsk -i list wsk -i action invoke /whisk.system/utils/echo -p message hello -b
如果任一命令失败,请确保安装了最新的https://github.com/projectodd/openwhisk-openshift/releases/latest%E3%80%82
https://github.com/apache/incubator-openwhisk-package-alarms%E5%8C%85%E6%8A%80%E6%9C%AF%E4%B8%8A%E4%B8%8D%E5%B1%9E%E4%BA%8E%E9%BB%98%E8%AE%A4OpenWhisk%E7%9B%AE%E5%BD%95%EF%BC%8C%E4%BD%86%E7%94%B1%E4%BA%8E%E5%AE%83%E6%98%AF%E8%AF%95%E9%AA%8C%E8%A7%A6%E5%8F%91%E5%99%A8%E5%92%8C%E8%A7%84%E5%88%99%E7%9A%84%E7%AE%80%E5%8D%95%E6%96%B9%E5%BC%8F%EF%BC%8C%E6%88%91%E4%BB%AC%E5%9C%A8%E6%A8%A1%E6%9D%BF%E4%B8%AD%E5%8C%85%E5%90%AB%E4%BA%86%E5%AE%83%E7%9A%84%E8%B5%84%E6%BA%90%E8%A7%84%E8%8C%83%E3%80%82
尝试以下wsk命令:
bashwsk -i trigger create every-5-seconds \ --feed /whisk.system/alarms/alarm \ --param cron '*/5 * * * * *' \ --param maxTriggers 25 \ --param trigger_payload "{\"name\":\"Odin\",\"place\":\"Asgard\"}" wsk -i rule create \ invoke-periodically \ every-5-seconds \ /whisk.system/samples/greeting wsk -i activation poll
首先,启动一个具有足够资源的最新版本https://github.com/minishift/minishift/%EF%BC%9A
bashminishift start --memory 8GB
并将oc命令添加到你的PATH中:
basheval $(minishift oc-env)
假设你已将本仓库克隆到本地工作区,运行:
bash./tools/travis/build.sh
这将创建一个openwhisk项目,将template.yml中的资源安装到其中,并等待所有组件就绪。完成后,你将拥有一个功能正常的OpenWhisk平台,然后可以指向你的wsk命令。
你可以通过以下方式快速冒烟测试你的集群:
bash./tools/travis/test.sh
如果你不想克隆本仓库,可以在创建新项目后直接遵循安装步骤:
bashoc new-project openwhisk oc process -f https://git.io/openwhisk-template | oc create -f -
如果你想测试对上游OpenWhisk(如控制器或invoker)所做的本地更改,首先确保使用minishift的docker仓库:
basheval $(minishift docker-env)
然后在构建OW镜像时,覆盖前缀和标签:
bash./gradlew distDocker -PdockerImagePrefix=projectodd -PdockerImageTag=whatever
projectodd前缀和whatever标签可以是任何你喜欢的值。你需要修补运行中的StatefulSets以引用它们,以便它们创建的任何新Pod将使用你的镜像。
bash# 修补控制器的StatefulSet oc patch statefulset controller -p '{"spec":{"template":{"spec":{"containers":[{"name":"controller","image":"projectodd/controller:whatever"}]}}}}' # 修补invoker的StatefulSet oc patch statefulset invoker -p '{"spec":{"template":{"spec":{"containers":[{"name":"invoker","image":"projectodd/invoker:whatever"}]}}}}' # 现在删除一个或两个Pod以运行最新镜像 oc delete --force --now pod invoker-0 controller-0
修补StatefulSets后,你的构建-测试-调试周期如下:编辑源代码,运行distDocker任务(如core:controller:distDocker或core:invoker:distDocker,使用上述前缀/标签),最后删除相关Pod(如controller-0或invoker-0)。这将触发修补后的StatefulSet创建一个包含你更改的新Pod。
请留出一些时间让组件干净地关闭并重新发现自己。同时,考虑编写一些好的单元测试。;)
如果你希望将更改发布到DockerHub的projectodd组织:
bashCOMMIT=$(git rev-parse HEAD | cut -c 1-7) ./gradlew distDocker -PdockerImagePrefix=projectodd -PdockerImageTag=$COMMIT -PdockerRegistry=docker.io
所有OpenWhisk资源可以使用模板优雅地关闭。-f参数接受本地文件或远程URL。
bashoc process -f template.yml | oc delete -f - oc delete all -l template=openwhisk
或者,你可以直接删除项目:
bashoc delete project openwhisk
如果你希望数据在重启后保留,有一个persistent-template.yml可以设置PersistentVolumeClaims。
larger.env中有一些适用于大型持久集群的合理默认值,你可以这样使用:
bashoc process -f persistent-template.yml --param-file=larger.env | oc create -f -
根据需要调整以下两者的连接数和测试持续时间。在大型系统上,确保使用数百个连接数进行测试。
ab对于简单测试,使用ab:
bashab -c 5 -n 300 -k -m POST -H "Authorization: Basic $(oc get secret whisk.auth -o yaml | grep "system:" | awk '{print $2}')" "https://$(oc get route/openwhisk --template={{.spec.host}})/api/v1/namespaces/whisk.system/actions/utils/echo?blocking=true&result=true"
wrk你可以使用wrk生成集群内负载:
bashecho -e "function main() {\n return {body: 'Hello world'};\n}" > helloWeb.js wsk -i action create helloWeb helloWeb.js --web=true oc run -it --image williamyeh/wrk wrk --restart=Never --rm --overrides='{"apiVersion":"v1", "spec":{"volumes":[{"name": "data", "emptyDir": {}}], "containers":[{"name": "wrk", "image": "williamyeh/wrk", "args": ["--threads", "4", "--connections", "50", "--duration", "30s", "--latency", "--timeout", "10s", "http://nginx/api/v1/web/whisk.system/default/helloWeb"], "volumeMounts": [{"mountPath": "/data", "name": "data"}]}]}}'
bin/activationStats.sh脚本可以输出最近函数激活的吞吐量和等待时间。这在抽查整体系统负载以及函数在OpenWhisk内部队列中等待被调用的时间时非常有用。
wsk list无输出)以下命令应显示多个系统包:
bashwsk -i package list /whisk.system
如果没有,install-catalog作业可能失败。首次安装OpenWhisk可能需要很长时间,因为要拉取大量Docker镜像。这可能导致install-catalog作业放弃,使你没有安装默认系统包。
要解决此问题,只需删除并重新创建作业:
bashoc delete job install-catalog oc process -f template.yml | oc create -f -
你会看到除install-catalog作业外的所有资源都显示无害的AlreadyExists错误。一旦其关联的Pod运行完成,你应该看到如下输出:
bash$ wsk -i package list /whisk.system packages /whisk.system/combinators shared /whisk.system/websocket shared /whisk.system/github shared /whisk.system/utils shared /whisk.system/slack shared /whisk.system/samples shared /whisk.system/watson-translator shared /whisk.system/watson-textToSpeech shared /whisk.system/watson-speechToText shared /whisk.system/weather shared /whisk.system/alarms shared
The requested resource does not exist创建动作时可能会出现请求资源不存在的错误:
bash$ wsk -i action create md5hasher target/maven-java.jar --main org.apache.openwhisk.example.maven.App error: Unable to create action 'md5hasher': The requested resource does not exist. (code 619)
如果发生这种情况,可能是API主机不正确。首先检查属性值:
bash$ wsk property get client cert Client key whisk auth 789c46b1-... whisk API host http://openwhisk-openwhisk.192.168.64.8.nip.io whisk API version v1 whisk namespace _ whisk CLI version 2018-02-28T21:13:48.864+0000 whisk API build 2018-01-01T00:00:00Z whisk API build number latest
API主机应仅包含主机名,前面没有http://。通过重置API主机修复:
bash$ wsk property set --apihost openwhisk-openwhisk.192.168.64.8.nip.io ok: whisk API host set to openwhisk-openwhisk.192.168.64.8.nip.io
现在再次尝试添加动作:
bash$ wsk -i action create md5hasher target/maven-java.jar --main org.apache.openwhisk.example.maven.App ok: created action md5hasher
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






来自真实用户的反馈,见证轩辕镜像的优质服务