此 Kubernetes 服务规范的等效 JSON 是多少?
What is the equivalent JSON for this Kubernetes service specification?
我想传递一个 JSON 文件,而不是 this YAML 文件。它的等效 JSON 是什么?我想在 kubectl create -f ...
命令中使用它:
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: ReplicationController
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
有很多在线 YAML
到 JSON
(反之亦然)转换器,涵盖 1.1 和 1.2 规范。
我以前没有用过Kubernetes
,但是我看到你可以传递多个文件。基本上,您使用的 YAML
结构是两个文档的简短版本。 JSON
没有与此等效的文件,因此您必须将其分成两个单独的文档(文件)。
YAML
中的三个破折号是定义多个文档的一种方式。
所以上面基本上不是一个JSON
oblect/file,而是两个。
第一个
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "my-nginx-svc",
"labels": {
"app": "nginx"
}
},
"spec": {
"type": "LoadBalancer",
"ports": [
{
"port": 80
}
],
"selector": {
"app": "nginx"
}
}
}
第二个
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-nginx"
},
"spec": {
"replicas": 2,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
作为旁注,由于这对您的目的没有用,为了将它们表示为一个 JSON
对象,您需要一个数组。但这意味着 YAML
也必须改变。所以为了拥有这个
[
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "my-nginx-svc",
"labels": {
"app": "nginx"
}
},
"spec": {
"type": "LoadBalancer",
"ports": [
{
"port": 80
}
],
"selector": {
"app": "nginx"
}
}
},
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-nginx"
},
"spec": {
"replicas": 2,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
]
YAML
等价物是这个
---
-
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
-
apiVersion: v1
kind: ReplicationController
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
您也可以使用 YAML 创建 Kubernetes 对象:
$ kubectl create -f nginx.yaml
如果你想得到JSON,你可以做到
$ kubectl get pods -o json
考虑到 spec.yaml
文件中的初始规范和调用:
kubectl create -f spec.yaml
使用 JSON 格式的等价物是:
- 将
spec.yaml
分成多个 JSON 文件:srv.json
和 rc.json
(每个 YAML 片段一个)
全部提供给kubectl
:
kubectl create -f srv.json -f rc.json
我想传递一个 JSON 文件,而不是 this YAML 文件。它的等效 JSON 是什么?我想在 kubectl create -f ...
命令中使用它:
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: ReplicationController
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
有很多在线 YAML
到 JSON
(反之亦然)转换器,涵盖 1.1 和 1.2 规范。
我以前没有用过Kubernetes
,但是我看到你可以传递多个文件。基本上,您使用的 YAML
结构是两个文档的简短版本。 JSON
没有与此等效的文件,因此您必须将其分成两个单独的文档(文件)。
YAML
中的三个破折号是定义多个文档的一种方式。
所以上面基本上不是一个JSON
oblect/file,而是两个。
第一个
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "my-nginx-svc",
"labels": {
"app": "nginx"
}
},
"spec": {
"type": "LoadBalancer",
"ports": [
{
"port": 80
}
],
"selector": {
"app": "nginx"
}
}
}
第二个
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-nginx"
},
"spec": {
"replicas": 2,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
作为旁注,由于这对您的目的没有用,为了将它们表示为一个 JSON
对象,您需要一个数组。但这意味着 YAML
也必须改变。所以为了拥有这个
[
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "my-nginx-svc",
"labels": {
"app": "nginx"
}
},
"spec": {
"type": "LoadBalancer",
"ports": [
{
"port": 80
}
],
"selector": {
"app": "nginx"
}
}
},
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-nginx"
},
"spec": {
"replicas": 2,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
]
YAML
等价物是这个
---
-
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
-
apiVersion: v1
kind: ReplicationController
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
您也可以使用 YAML 创建 Kubernetes 对象:
$ kubectl create -f nginx.yaml
如果你想得到JSON,你可以做到
$ kubectl get pods -o json
考虑到 spec.yaml
文件中的初始规范和调用:
kubectl create -f spec.yaml
使用 JSON 格式的等价物是:
- 将
spec.yaml
分成多个 JSON 文件:srv.json
和rc.json
(每个 YAML 片段一个) 全部提供给
kubectl
:kubectl create -f srv.json -f rc.json