正在验证Kubernetes中部署时的错误



我已经尝试在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

多个问题:

  1. Service中是apiVersion: v1而不是apiVerion: v1

  2. CCD_ 7形成错误的CCD_。由于nodePortporttargetPortprotocol作为一个列表在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

这些值是必需的,没有它们您将无法创建对象。所以,下次请仔细阅读您收到的错误。

相关内容

  • 没有找到相关文章

最新更新