kubernetes - Kubernetes - 在 configmap 中指定 externalips
问题描述
我有一个 Kubernetes 集群(外部 ips:1.2.3.4、2.3.4.5、3.4.5.6)我想在这个集群的 5000 端口上托管一个 docker 注册表。现在为了启用它,我用 externalips 进行了测试,它有效。这使得 nginx 在端口 85 上可用。
apiVersion: v1
kind: Service
metadata:
name: nginx-extip
spec:
type: ClusterIP
ports:
- name: http
protocol: TCP
port: 85
targetPort: 80
selector:
app: nginx-extip
externalIPs:
- 1.2.3.4
- 2.3.4.5
- 3.4.5.6
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-extip
spec:
replicas: 1
template:
metadata:
labels:
app: nginx-extip
spec:
containers:
- name: nginx-extip-server
image: nginx
ports:
- containerPort: 80
现在要重用 externalip 配置,我想将其放入 configmap 中。所以所有的 yaml 都可以只引用 configmap,我们不必在外部 IP 发生变化时手动更新它们。如何将一组 ips 放入 configmap?
我当前(不工作)的配置图:
apiVersion: v1
kind: ConfigMap
metadata:
name: externalips
namespace: default
data:
externalips:
- 1.2.3.4
- 2.3.4.5
- 3.4.5.6
我得到的错误:
error: error validating "static-ips-configmap.yml": error validating data:
ValidationError(ConfigMap.data.externalips): invalid type for
io.k8s.api.core.v1.ConfigMap.data: got "array", expected "string";
if you choose to ignore these errors, turn validation off with --validate=false
如何将这些 IP 放入 configmap?
解决方案
这里有两个问题:
创建 configmap 本身时存在语法错误。配置映射希望您列出一堆文件及其内容,因此正确的语法如下所示:
apiVersion: v1 kind: ConfigMap metadata: name: externalips namespace: default data: external-ips.list: | externalips: - 1.2.3.4 - 2.3.4.5 - 3.4.5.6
我认为不可能引用您为模板化服务规范而创建的配置映射。因此,即使您设法正确创建了配置映射,您仍然无法将其作为不同服务定义的一部分重用。
您需要一个可用于将这些外部 IP 添加到服务的带外模板系统。或者,使用入口控制,您必须使用外部 IP 配置一次,然后使用它来复用集群内的所有 HTTP 服务。这样,您无论如何只能管理一项服务的 IP。
推荐阅读
- swift - 具有分页功能的 UIScrollView 无法正常工作
- hyperledger-fabric - 不支持一次更新多个同意者
- keras - CNN 输出的非常高的分类阈值以获得良好的性能。普通的?
- highcharts - Highcharts 8 升级:Highcharts.DataPoint 没有导出成员
- javascript - 如何在jquery中自动打印时删除不需要的内容,如url
- java - 无法解析根:缺少要求 [root] osgi.identity
- sql - 如何在 JSON_EXISTS Oracle SQL Developer 中使用双引号传递参数
- python - 使用 I/O 运行 Dockerized Python 应用程序
- c++ - 通过可变参数模板函数的参数包以相反的顺序迭代
- python - 使用请求进行身份验证后的 Web 抓取