目标和问题
使容器/吊舱部署能够持续运行。容器应该执行的命令是:/usr/local/bin/python3
,该命令的参数是:“-c$'import time\\n while(True):\\n print(\“\”);time.sleep(5);”
。但是,当我执行kubectl apply-f“PATH\u TO\u KUBERNETES\u YAML\u文件”
时,部署会出现以下Python异常错误:indicationerror:unexpected indent
。
Pod部署用作调用Python代码的媒介,在使用LetsEncrypt证书时,Python代码作为任务的一部分与Certbot客户端交互。
在这里查看项目
所以应该可以部署吊舱
尝试:
定义库伯内特斯命令args行的各种方法。
>
python3-c exec(\"导入时间\n true:打印(\".\"); time.sleep(5);\")
$'textwrap.dedent(""导入时间,而True:print(".")time.sleep(5)""")'
...尝试使用:
args:
- "-c $'import time\\nwhile (True):\\n print(\".\");time.sleep(5);'"
作为args的替代方法:[“-c$”导入时间\\n而(True):\\n打印(\“\”);时间。睡眠(5);“]
确认Python代码本身可以工作。
进一步资料
它似乎是在Kubernetes Pod部署YAML文件中指定Python代码的组合。。。这与Pythons对显著空格和缩进的要求不符。正如您在#trued部分中所读到的,它在直接调用Python或通过Docker run/exec命令调用Python时工作。
我如何解决这个问题?
所以我在Kubernetes Slack频道上得到了帮助。这是一个YAML语法问题。
args:
- |-
-c
import time
while True:
print('.')
time.sleep(5)
这与Dockerfile的...
FROM larssb/certbot-dns-cloudflare-python3
LABEL author="https://github.com/larssb"
#
# Container config
#
WORKDIR /letsencryptit
#
# COPY IN DATA
#
COPY ./scripts /scripts/
COPY ./letsencryptit /letsencryptit/
#
# INSTALL
#
RUN pip install --upgrade google-api-python-client --disable-pip-version-check --no-cache-dir \
&& pip install --upgrade oauth2client --disable-pip-version-check --no-cache-dir \
&& pip install --upgrade sty --disable-pip-version-check --no-cache-dir \
&& chmod +x /scripts/deploy-hook-runner.sh
# Set an ENTRYPOINT to override the entrypoint specified in certbot/certbot
ENTRYPOINT ["/usr/local/bin/python3"]
CMD ["-c"]
ENTRYPOINT
,因为这会被Pod部署重新使用。但是,Dockerfile的CMD
被Pod部署YAML文件中的args
属性覆盖。
-c
是Python二进制文件的参数kubectl exec
args
属性的这一部分
args
属性中所需语法的示例代码的要点。在这里找到它。感谢@wizzwizz4,@a_客人提出的意见和建议。他们帮我解决了这个问题,找到了一个解决方案。同时非常感谢Kubernetes Slack频道的@grampelberg先生帮助我并提供了解决方案。
我只是在本地mac上使用mini kube设置kubernetes。 创建了一个类型为NodePort的服务,并且能够使用url
我正在尝试在Kubernetes集群(Azure AKS)中部署Flink作业。作业群集在启动后立即中止,但任务管理器运行正常。 docker镜像创建成功,没有任何异常。我可以运行docker镜像,也可以SSHdocker镜像。 我已经按照以下链接中提到的步骤: https://github.com/apache/flink/tree/release-1.9/flink-container/kub
我正在尝试使用helm图表部署我的应用程序。我已经将statefulSet定义为一种正在部署的类型。yaml并根据规范serviceName提供无头服务。来自部署的代码片段。yaml如下所示。 部署后,当我启动“kubectl get pods”时,其显示的POD名称为“MyApp-100-deployment-n”,其中n 如果我使用kubectl exec进入Pod,并触发“主机名”命令,我会
问题内容: 我是Python的新手,正在收到此错误: 在这段代码上: 问题答案: 尽管缩进错误在StackOverflow页面上很明显,但它们可能不在您的编辑器中。您在这里混合使用不同的缩进类型,1、4和8个空格。根据PEP8,您应始终使用四个空格进行缩进。您还应该避免混用制表符和空格。 我还建议您尝试使用‘ ‘命令行选项 来运行脚本,以确定何时意外混合使用制表符和空格。当然,任何体面的编辑器都可
是否可以在库伯内特斯中配置入口控制器,仅当传入请求的标头具有特定值时才将HTTP请求路由到服务? 实例 带有以下标头的HTTP请求 应该转发给服务1 带有以下标头的HTTP请求 应该被阻止 如果可能的话,你能详细一点或指向一些文档,因为我找不到这种用例的文档吗
我只是想知道如何手动设置库伯内特斯Web仪表板使用的外部endpoint。 创建名称空间kube系统后,我运行了以下操作: 是否有一个标志可以用来指定外部访问使用哪个tcp端口?据我所知,这只是随机分配一个。我已经查看了留档,但我很难找到解决方案。如果有任何帮助,将不胜感激。