kubernetes 为什么我不能找到istio网关命名空间istio-system或任何其他命名空间后创建?

ru9i0ody  于 2023-05-28  发布在  Kubernetes
关注(0)|答案(2)|浏览(216)

我已经为我的k8s集群设置了istio,它似乎工作得很成功。istioctl也可以工作,返回版本1.17.2,与我的k8s集群兼容。部署输出如下。

k8s@k8master-virtual-machine:~$ kubectl get pods -n istio-system
NAME                                   READY   STATUS    RESTARTS   AGE
istio-egressgateway-85649899f8-ccgs4   1/1     Running   0          2m58s
istio-ingressgateway-f56888458-bzkfk   1/1     Running   0          2m58s
istiod-64848b6c78-74s48                1/1     Running   0          3m2s

k8s@k8master-virtual-machine:~/istio-yamls$ kubectl get rolebindings -n istio-system
NAME                       ROLE                            AGE
istio-egressgateway-sds    Role/istio-egressgateway-sds    27m
istio-ingressgateway-sds   Role/istio-ingressgateway-sds   27m
istiod                     Role/istiod                     27m
istiod-istio-system        Role/istiod-istio-system        27m

k8s@k8master-virtual-machine:~/istio-yamls$ kubectl get roles -n istio-system
NAME                       CREATED AT
istio-egressgateway-sds    2023-05-25T06:48:22Z
istio-ingressgateway-sds   2023-05-25T06:48:22Z
istiod                     2023-05-25T06:48:18Z
istiod-istio-system        2023-05-25T06:48:16Z

**问题:**我遇到的非常奇怪的问题如下。当我使用kubectl apply -f gateway.yaml应用我的网关文件时,它显示已创建。

k8s@k8master-virtual-machine:~/istio-yamls$ kubectl apply -f gateway.yaml
gateway.networking.istio.io/testmy-gateway created

但是当我使用get命令查看状态时,我发现没有找到资源。

k8s@k8master-virtual-machine:~/istio-yamls$ kubectl get gateway -n istio-system
No resources found in istio-system namespace.

在我的YAML文件中,我使用了命名空间istio-system,因为这是我的yaml文件。

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: testmy-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:

  - port:
      number: 80
      name: gw-http
      protocol: HTTP
    hosts:
    - '*'

”””我做了什么来修复它吗?我查看了所有命名空间**中的网关,没有任何发现。我卸载了istio并删除了它的命名空间CRD和所有数据,以清理启动,但仍然面临同样的问题。我用相同的资源创建了一个新的k8s集群,并部署了这个Istio设置,它运行得很好。
我发现一个StackOverflow question像我的问题,但答案只是一个评论。我很难理解它背后的逻辑。

**我想要什么?**由于相同的Istio设置和yaml文件在另一个集群上完美工作,这意味着这个集群有问题。我已经尝试了所有的方法来解决这个问题,但没有运气。我需要找出为什么我的网关文件部署在这里但没有显示。**请解释另一个问题,该信息如何重要?**我甚至检查网关名称并深入它,发现了同样的问题。任何帮助建议和支持将不胜感激。先谢了。

58wvjzkj

58wvjzkj1#

有两种可能的解释可以解释为什么您看不到网关,即使它已成功应用。
1.您之前安装了旧版本的istio(您在评论中确认了这一点),此后网关CRD的组发生了变化,但旧版本尚未清理/仍受支持,因此它仍然存在。
1.集群中有一个不同的CRD,其名称相同(复数)gateways,但组不同(与istio无关)。
您可以通过kubectl get crd | grep gateways验证哪个是真的,它将显示所有具有该复数的CRD。检查那些名称为gateways.<some-api-group>的。
如果它是一个旧的,未使用的CRD,您可以删除它。否则,您需要指定kubectl命令,如kubectl get gateways.networking.istio.io,因为kubectl不知道您指的是哪个组,并显示您没有任何资源的另一个组。
这可能是因为Kubernetes Gateway API gateways.gateway.networking.k8s.io CRD。如果您的集群已经提供了CRD,您可以考虑使用它来配置网关,请参阅docs
否则,每次都需要指定完整的名称,包括istio组。你可以创建一个别名,如果这是太烦人了。

xzlaal3s

xzlaal3s2#

当我运行kubectl get crd | grep gateways时,我看到了四个网关

gateways.gateway.networking.k8s.io
gateways.networking.istio.io
gateways.networking.istio.local
httpgateways.gateway.solo.io

我删除了所有这些与此命令kubectl delete crd gateways.........后,我运行istioctl install --set profile=demo -y它安装imp CRD再次.
当我再次部署gateway.yaml文件时,它显示一个错误

Error from server (NotFound): Unable to list "gateway.solo.io/v1, Resource=gateways": the server could not find the requested resource (get gateways.gateway.solo.io)

最后,我从istio-system命名空间重新启动所有3个部署

NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
istio-egressgateway    1/1     1            1           138m
istio-ingressgateway   1/1     1            1           138m
istiod                 1/1     1            1           138m

现在,当我部署gateway.yaml文件时,它可以正常工作。
然而,我仍然在寻找一些解释,为什么这些crd和网关的重要性,他们的角色是什么?为什么当我清理所有东西的时候它们没有被删除?
我希望这对某人有帮助。

相关问题