出现错误无法识别“ingress.yaml”:版本“extensions/v1beta1”中没有与类型“Ingress”匹配

use*_*679 8 kubernetes minikube

我正在参加舵图课程,第一个实验室创建了一个 pod、服务和入口。我对 k8s 比较陌生,我在 minikube 上运行。Pod 和服务的创建没有任何问题;但是 ingress.yaml 文件给出以下错误:

无法识别“ingress.yaml”:版本“extensions/v1beta1”中没有与类型“Ingress”匹配

我猜测 ingress.yaml 文件中的某些内容已过时,但不知道如何修复它。这是类存储库:

https://github.com/phcollignon/helm3
Run Code Online (Sandbox Code Playgroud)

这是 pod frontend.yaml :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend 
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - image: phico/frontend:1.0
        imagePullPolicy: Always
        name: frontend
        ports:
        - name: frontend
          containerPort: 4200
Run Code Online (Sandbox Code Playgroud)

这是 frontend_service.yaml :

apiVersion: v1
kind: Service
metadata:
  labels:
    name: frontend
  name: frontend
spec:
  ports:
    - protocol: "TCP"
      port: 80
      targetPort: 4200
  selector:
    app: frontend
Run Code Online (Sandbox Code Playgroud)

这是问题文件 ingress.yaml :

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: guestbook-ingress
spec:
  rules:
  - host: frontend.minikube.local
    http:
      paths:
      - path: /
        backend:
          serviceName: frontend
          servicePort: 80
  - host: backend.minikube.local
    http:
      paths:
      - path: /
        backend:
          serviceName: backend
          servicePort: 80%        
Run Code Online (Sandbox Code Playgroud)

这是 minikube 版本(kubectrl 版本):

Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.1", GitCommit:"86ec240af8cbd1b60bcc4c03c20da9b98005b92e", GitTreeState:"clean", BuildDate:"2021-12-16T11:34:54Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)

很感谢任何形式的帮助。

我更改了 ingress.yaml 文件以使用 apiVersion: networking.k8s.io/v1:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: guestbook-ingress
spec:
  rules:
  - host: frontend.minikube.local
    http:
      paths:
      - path: /
        backend:
          service:
            name: frontend
            port:
              number: 80
  - host: backend.minikube.local
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: backend
            port:
              number: 80
Run Code Online (Sandbox Code Playgroud)

现在我收到错误:

错误:解析 ingress.yaml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 17 行:此上下文中不允许映射值

第 17 行是第二个“paths:”行。

再次感谢任何帮助。

goh*_*m'c 14

Ingress 规范apiVersion: extensions/v1beta1已弃用。您可以将其更新为apiVersion: networking.k8s.io/v1

第二个问题:

kind: Ingress
metadata:
  name: guestbook-ingress
spec:
  rules:
  - host: frontend.minikube.local
    http:
      paths:
      - path: /
        pathType: Prefix  
        backend:
          service:
            name: frontend
            port:
              number: 80
  - host: backend.minikube.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: backend
            port:
              number: 80
Run Code Online (Sandbox Code Playgroud)