I am getting the following error when I run
kubectl create -f pod.yamlerror
Error from server (BadRequest): error when creating "pod.yaml": Pod in
version "ratings:v1" cannot be handled as a Pod: no kind "Pod" is
registered for version "ratings:v1"minikube is up and running and I even tried to change it to kind: Deployment but I got another error saying:
error: unable to recognize "pod.yaml": no matches for /, Kind=Deploymentyaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: customer-ratings
labels:
app: product-ratings-vue
spec:
replicas: 1
selector:
matchLabels:
app: product-ratings-vue
template:
metadata:
labels:
app: product-ratings-vue
spec:
containers:
- name: api-service
image: api-service
ports:
- containerPort: 8080
- containerPort: 8000
resources: {}
volumeMounts:
- mountPath: /usr/local/tomcat/logs
name: api-service-claim
# ekomi-import
- name: ekomi-import
image: ekomi-import
resources: {}
# cache
- name: cache
image: cache
resources:
limits:
memory: "536870912"
# storage
- name: storage
image: storage
ports:
- containerPort: 7000
- containerPort: 7001
- containerPort: 7199
- containerPort: 9042
- containerPort: 9160
resources: {}
# view
- name: view
image: view
ports:
- containerPort: 3000
resources: {}
volumes:
- name: api-service-claim
persistentVolumeClaim:
claimName: api-service-claim
# tomcat
- name: tomcat
image: tomcat
# node
- name: node
image: node
resources: {}
# openJdk
- name: node
- image: node
resources: {}You have a lot of issues here. I've described some of them:
1. pod.yaml file's structure is a structure of a Deployment object.
2. apiVersion for Deployment depends of kubernetes version:
apps/v1beta1 for versions before 1.8.0apps/v1beta2 for versions starting from 1.8.0 before 1.9.0apps/v1 for versions starting from 1.9.0So, if you deploy your pod.yaml on the latest kubernetes cluster it should be started from:
apiVersion: apps/v1
kind: Deployment3. The part:
spec:
replicas: 1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
template:
metadata:
labels:
app: product-ratings-vueshould be changed to:
spec:
replicas: 1
template:
metadata:
labels:
app: product-ratings-vue4. Second spec block should be moved on the same level as spec.template.metadata:
spec:
replicas: 1
template:
metadata:
labels:
app: product-ratings-vue
spec:
containers: The final deployment.yaml is:
apiVersion: apps/v1
kind: Deployment
metadata:
name: customer-ratings
labels:
app: product-ratings-vue
spec:
replicas: 1
selector:
matchLabels:
app: product-ratings-vue
template:
metadata:
labels:
app: product-ratings-vue
spec:
containers:
- name: api-service
image: api-service
ports:
- containerPort: 8080
- containerPort: 8000
resources: {}
volumeMounts:
- mountPath: /usr/local/tomcat/logs
name: api-service-claim
# ekomi-import
- name: ekomi-import
image: ekomi-import
resources: {}
# cache
- name: cache
image: cache
resources:
limits:
memory: "536870912"
# storage
- name: storage
image: storage
ports:
- containerPort: 7000
- containerPort: 7001
- containerPort: 7199
- containerPort: 9042
- containerPort: 9160
resources: {}
# view
- name: view
image: view
ports:
- containerPort: 3000
resources: {}
# tomcat
- name: tomcat
image: tomcat
# node
- name: node
image: node
resources: {}
# openJdk
- name: node
image: node
resources: {}
volumes:
- name: api-service-claim
persistentVolumeClaim:
claimName: api-service-claim