在Kubernetes部署Apache Pulsar时sed命令执行报错问题
解决Kubernetes部署Apache Pulsar时sed命令报错问题
错误原因
你在args数组里给sed的替换表达式加了多余的单引号。Kubernetes会把数组里的每个元素直接作为命令参数传递,不需要用单引号包裹——这些单引号会被当成sed表达式的一部分,导致sed无法识别命令,所以抛出unknown command: ''`错误。
修复后的配置
把sed参数里的单引号去掉,修改后的YAML片段如下:
- name: pulsar image: apachepulsar/pulsar:3.1.2 args: ["sed", "-i", "s/webServicePort=8080/webServicePort=8082/g", "conf/standalone.conf", ";", "bin/pulsar", "standalone"]
更优雅的替代方案
直接在启动命令里用sed修改配置不是最可靠的方式,推荐用Kubernetes ConfigMap来挂载自定义的standalone.conf文件:
- 创建ConfigMap,包含修改好端口的配置:
apiVersion: v1 kind: ConfigMap metadata: name: pulsar-config data: standalone.conf: | # 复制原standalone.conf的内容,修改webServicePort为8082 webServicePort=8082 # 保留其他原有配置项...
- 在Deployment里挂载这个ConfigMap到容器的
conf目录:
- name: pulsar image: apachepulsar/pulsar:3.1.2 args: ["bin/pulsar", "standalone"] volumeMounts: - name: pulsar-config-volume mountPath: /pulsar/conf/standalone.conf subPath: standalone.conf volumes: - name: pulsar-config-volume configMap: name: pulsar-config
这种方式避免了启动时的命令行修改,配置更清晰也更易维护。
内容的提问来源于stack exchange,提问作者le_coder
相关产品推荐
相关产品推荐

