実現したいこと
Windows10にRancher Desktopをインストールし、Kubernetesクラスタに
- Deployment
- Service
- Ingress
を作成していますが、どうもIngressの動作が不安定です。
Deployment、Serviceはhelmからwordpressをインストールしています。
リポジトリ bitnami https://charts.bitnami.com/bitnami helm install wp bitnami/wordpress
Serviceまではリクエストを投げるとHTMLが返ってくるところまでは確認しています。
IngressがServiceに繋がったり、繋がらなかったりします。
Ingressが正常にServiceに繋がる状態の時はWindowsのnetstatコマンドで見るとlocalhost:80をリッスンしていますが、繋がらない時はリッスンしていません。。
Serviceまでは正常(そもそもhelmでchartインストールしているから、おかしなところはないはず)なのは確認しているので、Ingressのせいだと思うのですが、
こういった場合、Ingress -> Serviceまでの経路でどこまでうまくいっているか、どうやってデバックしたらいいのか、お知恵をお貸しください。
前提
Serviceの状態
kubectl get service -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR wp-mariadb ClusterIP 10.43.220.131 <none> 3306/TCP 25m app.kubernetes.io/component=primary,app.kubernetes.io/instance=wp,app.kubernetes.io/name=mariadb wp-wordpress LoadBalancer 10.43.91.73 <pending> 80:32200/TCP,443:31965/TCP 25m app.kubernetes.io/instance=wp,app.kubernetes.io/name=wordpress
Ingresの状態
kubectl get ingress -o wide NAME CLASS HOSTS ADDRESS PORTS AGE worpress-ingress traefik localhost 172.17.45.211 80 23m
発生している問題・エラーメッセージ
「このサイトにアクセスできません。localhost で接続が拒否されまし」
netstatで見るとlocalhost:80をリッスンしていない。
該当のソースコード
serviceのマニフェスト
apiVersion: v1 kind: Service metadata: annotations: meta.helm.sh/release-name: wp meta.helm.sh/release-namespace: default creationTimestamp: "2023-05-30T00:27:49Z" finalizers: - service.kubernetes.io/load-balancer-cleanup labels: app.kubernetes.io/instance: wp app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: wordpress helm.sh/chart: wordpress-16.1.9 managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:meta.helm.sh/release-name: {} f:meta.helm.sh/release-namespace: {} f:labels: .: {} f:app.kubernetes.io/instance: {} f:app.kubernetes.io/managed-by: {} f:app.kubernetes.io/name: {} f:helm.sh/chart: {} f:spec: f:allocateLoadBalancerNodePorts: {} f:externalTrafficPolicy: {} f:internalTrafficPolicy: {} f:ports: .: {} k:{"port":80,"protocol":"TCP"}: .: {} f:name: {} f:port: {} f:protocol: {} f:targetPort: {} k:{"port":443,"protocol":"TCP"}: .: {} f:name: {} f:port: {} f:protocol: {} f:targetPort: {} f:selector: {} f:sessionAffinity: {} f:type: {} manager: helm operation: Update time: "2023-05-30T00:27:49Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:finalizers: .: {} v:"service.kubernetes.io/load-balancer-cleanup": {} manager: k3s operation: Update subresource: status time: "2023-05-30T00:27:49Z" name: wp-wordpress namespace: default resourceVersion: "1107" uid: aeddb0a2-089d-41e9-b7cb-cd480079423c spec: allocateLoadBalancerNodePorts: true clusterIP: 10.43.91.73 clusterIPs: - 10.43.91.73 externalTrafficPolicy: Cluster internalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - name: http nodePort: 32200 port: 80 protocol: TCP targetPort: http - name: https nodePort: 31965 port: 443 protocol: TCP targetPort: https selector: app.kubernetes.io/instance: wp app.kubernetes.io/name: wordpress sessionAffinity: None type: LoadBalancer status: loadBalancer: {}
Ingressのマニフェスト
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: creationTimestamp: "2023-05-30T00:30:50Z" generation: 1 managedFields: - apiVersion: networking.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:spec: f:ingressClassName: {} f:rules: {} manager: steve.exe operation: Update time: "2023-05-30T00:30:50Z" - apiVersion: networking.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:loadBalancer: f:ingress: {} manager: traefik operation: Update subresource: status time: "2023-05-30T00:30:50Z" name: worpress-ingress namespace: default resourceVersion: "1260" uid: 22989e6d-fd23-4c23-ae57-da64ad3a92b1 spec: ingressClassName: traefik rules: - host: localhost http: paths: - backend: service: name: wp-wordpress port: number: 80 pathType: ImplementationSpecific status: loadBalancer: ingress: - ip: 172.17.45.211
試したこと
ChatGPT先生にも色々聞いてみたのですが・・・
Rancher DesktopはIngress Classはtraefikがデフォルトです。どうも、「traefikが怪しい、traefikのpodを再起動しろ」というので、Deploymentからreredeployしたらうまく繋がったときもありましたが、繋がらない時もあります。今もreredeployしても繋がりません。
Rancher DesktopでKubenetesをFactry Resetして最初からhelmでインストール、Ingressを作成するとうまく繋がるときもありますが、繋がらない時もあります。
Rancher Desktopを一旦、アンインストールして、Windowsをリブート。再インストールしてみましたが、それでも繋がりません。
補足情報(FW/ツールのバージョンなど)
- Rancher Desktop: 1.8.1
- Kubernetes Version: v1.26.4(stable)
- Container Engine: containerd
- Ingress class: traefik
あなたの回答
tips
プレビュー