我已经尝试在Kubernetes集群中部署带有MySQL数据库的producer-service
应用程序。当我尝试部署producer app
时,会引发以下验证错误。
error: error validating "producer-deployment.yml": error validating data: apiVersion not set; if you choose to ignore these errors, turn validation off with --validate=false
生产者部署.yml
apiVerion: v1
kind: Service
metadata:
name: producer-app
labels:
name: producer-app
spec:
ports:
-nodePort: 30163
port: 9090
targetPort: 9090
protocol: TCP
selector:
app: producer-app
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: producer-app
spec:
selector:
matchLabels:
app: producer-app
replicas: 3
template:
metadata:
labels:
app: producer-app
spec:
containers:
- name: producer
image: producer:1.0
ports:
- containerPort: 9090
env:
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: db-config
key: host
- name: DB_NAME
valueFrom:
configMapKeyRef:
name: db-config
key: name
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-user
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-user
key: password
我试图在配置文件中找到错误或打字错误,但仍然无法找到。producer-deployment.yml
文件出了什么问题
- 请更改producter-deployment.yml中的第一行。缺少字母s
来自
apiVerion:v1
至
apiVersion:v1
多个问题:
-
在
Service
中是apiVersion: v1
而不是apiVerion: v1
-
CCD_ 7形成错误的CCD_。由于
nodePort
、port
、targetPort
和protocol
作为一个列表在ports
之下,但您的格式错误。
您的服务yaml应该如下所示:
apiVersion: v1
kind: Service
metadata:
name: producer-app
labels:
name: producer-app
spec:
ports:
- nodePort: 30163
port: 9090
targetPort: 9090
protocol: TCP
selector:
app: producer-app
type: NodePort
所以你的整体yaml
应该是:
apiVersion: v1
kind: Service
metadata:
name: producer-app
labels:
name: producer-app
spec:
ports:
- nodePort: 30163
port: 9090
targetPort: 9090
protocol: TCP
selector:
app: producer-app
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: producer-app
spec:
selector:
matchLabels:
app: producer-app
replicas: 3
template:
metadata:
labels:
app: producer-app
spec:
containers:
- name: producer
image: producer:1.0
ports:
- containerPort: 9090
env:
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: db-config
key: host
- name: DB_NAME
valueFrom:
configMapKeyRef:
name: db-config
key: name
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-user
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-user
key: password
第一行有一个拼写错误:"apiVerion";应该是";apiVersion";。
您的第一个错误(超过1个(只是将您指向了应该开始调查的地方。。
error validating data: apiVersion not set;
正如您所知,kubernetes中的每个对象都有自己的apiVersion。检查理解Kubernetes对象,特别是必填字段部分:
在您要创建的Kubernetes对象的.yaml文件中,您将需要为以下字段设置值:
apiVersion
-您正在使用哪个版本的Kubernetes API创建这个对象
kind
-您想要创建什么样的对象
metadata
-有助于唯一识别对象的数据,包括名称字符串、UID和可选的命名空间
spec
-你想要什么状态对于对象对象规范的精确格式对于每个Kubernetes对象,并包含特定于该对象的嵌套字段对象Kubernetes API参考可以帮助您找到
spec
格式对于您可以使用Kubernetes创建的所有对象。
您可以在这里查看最新的1.20 API
这些值是必需的,没有它们您将无法创建对象。所以,下次请仔细阅读您收到的错误。