microk8s.kubectl apply -f无效,但create -f有效,用于ingress

81次阅读
没有评论

问题描述

在使用microk8s.kubectl命令创建Kubernetes Ingress对象时遇到了问题。使用kubectl apply -f命令创建的Ingress对象无效,但使用kubectl create -f命令创建的Ingress对象有效。用户想知道kubectl create -fkubectl apply -f命令之间的区别,并且是否可以使用kubectl apply -f命令创建Ingress对象。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

kubectl create -fkubectl apply -f命令的区别

kubectl create -fkubectl apply -f命令都可以用于创建Kubernetes资源对象,但它们在处理已存在的对象时有所不同。

  • kubectl create -f命令会尝试创建指定的资源对象,如果该对象已经存在,则会报错。这意味着如果你使用kubectl create -f命令创建一个已经存在的对象,会导致创建失败并返回错误信息。

  • kubectl apply -f命令会尝试创建指定的资源对象,如果该对象已经存在,则会更新该对象的配置。这意味着如果你使用kubectl apply -f命令创建一个已经存在的对象,会更新该对象的配置而不会报错。

综上所述,kubectl create -f命令适用于创建全新的资源对象,而kubectl apply -f命令适用于更新已存在的资源对象。

使用kubectl apply -f创建Ingress对象

是的,你可以使用kubectl apply -f命令来创建Ingress对象。根据你提供的问题描述,你已经成功地使用kubectl create -f命令创建了一个有效的Ingress对象。但是当你使用kubectl apply -f命令创建Ingress对象时,它无效。

这可能是由于Ingress对象的配置已经存在,并且kubectl apply -f命令只会更新已存在的对象的配置,而不会创建新的对象。

为了解决这个问题,你可以尝试以下步骤:

  1. 删除已存在的Ingress对象:
    bash
    kubectl delete ingress dashboard-ingress -n kube-system

  2. 使用kubectl apply -f命令创建Ingress对象:
    bash
    kubectl apply -f kubernetes-dashboard-ingress.yaml

这样,你应该能够使用kubectl apply -f命令成功创建Ingress对象。

请注意,如果你在创建Ingress对象之前已经使用kubectl create -f命令创建了该对象,那么你需要先删除已存在的对象,然后再使用kubectl apply -f命令创建新的对象。

希望这个解决方案能帮助到你!如果你有任何其他问题,请随时提问。

正文完