次のようにIngressを追加します。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cheddar
spec:
rules:
- host: cheddar.213.215.191.78.nip.io
http:
paths:
- backend:
service:
name: cheddar
port:
number: 80
path: /
pathType: ImplementationSpecific
しかし、ログには次のように書かれています:
W0205 15:14:07.482439 1 warnings.go:67] extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
time="2021-02-05T15:14:07Z" level=info msg="Updated ingress status" namespace=default ingress=cheddar
W0205 15:18:19.104225 1 warnings.go:67] networking.k8s.io/v1beta1 IngressClass is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 IngressClassList
なぜですか? 使用する正しい yaml は何ですか? 現在、microk8s 1.20 を使用しています
ベストアンサー1
あなたの問題を分析した結果、以下の結論に達しました。
- Ingress は動作します。表示されるこれらの警告は、利用可能な API のバージョンについて通知するだけです。これについて心配する必要はありません。私は同じ警告を見たことがあります:
@microk8s:~$ kubectl describe ing
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
apiVersion: networking.k8s.io/v1
を使用しているにもかかわらず、なぜこれが起こるのかについては、以下の説明:
これは期待どおりに動作しています。Ingress オブジェクトを作成すると、任意のバージョンで読み取ることができます (サーバーは要求されたバージョンへの変換を処理します)。
kubectl get ingress
これは、どのバージョンを読み取る必要があるかを示していないため、あいまいな要求です。あいまいなリクエストが行われると、kubectl はサーバーから返された検出ドキュメントを検索し、指定されたリソースを含む最初のグループ/バージョンを見つけます。
互換性の理由から、
extensions/v1beta1
これまでは が他のすべての API バージョンよりも優先されてきました。現在、Ingress はそのグループに残っている唯一のリソースであり、非推奨で GA の代替品があるため、1.20 では の優先順位が下がり、 はkubectl get ingress
から読み取りますnetworking.k8s.io/v1
が、1.19 サーバーは引き続き従来の優先順位に従います。特定のバージョンを読み取りたい場合は、get リクエストを修飾するか (
kubectl get ingresses.v1.networking.k8s.io
... のように)、マニフェスト ファイルを渡して、ファイルで指定されたものと同じバージョンを要求することができます (kubectl get -f ing.yaml -o yaml
)
簡単に言うと、適切な を使用しているにもかかわらずapiVersion
、非推奨の が依然としてデフォルトの として認識され、警告が生成されます。
私もそう思います変更はまだ行われています最近なので、まだ作業中だと思います。