基本的にURLで外部からNginx-helloページにアクセスしたいです。kubernetes と Nginx イングレスを実行している v-server へのサブドメインの (機能する) A レコードを作成しました: vps.my-domain.com
次のチュートリアルを使用して、CoreOS に kubeadm を介して単一ノード クラスターとして Kubernetes をインストールしました: https://kubernetes.io/docs/setup/independent/install-kubeadm/、https://kubernetes.io/docs/setup/independent/ create-cluster-kubeadm/ 、およびhttps://kubernetes.github.io/ingress-nginx/deploy/#bare-metalを使用する nginx-ingress 。
また、次のエントリを /etc/hosts ファイルに追加しました。
31.214.xxx.xxx vps.my-domain.com
(xxx はサーバー IP の下 3 桁に置き換えられました)
次のファイルを使用して、デプロイ、サービス、イングレスを作成しました。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- name: http
containerPort: 80
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
selector:
run: my-nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/ssl-redirect: "False"
spec:
rules:
- host: vps.my-domain.com
http:
paths:
- backend:
serviceName: my-nginx
servicePort: 80
記述の出力:
core@vps ~/k8 $ kubectl describe ing
Name: my-nginx
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
vps.my-domain.com
my-nginx:80 (<none>)
Annotations:
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"extensions/v1beta1",...}
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/ssl-redirect: False
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal UPDATE 49m (x2 over 56m) nginx-ingress-controller Ingress default/my-nginx
nodeip とポート 80 を使用して Nginx の hello ページをカールできますが、VM の外部からは機能しません。Failed to connect to vps.my-domain.com port 80: Connection refused
私は何かを忘れましたか、それとも設定が間違っていますか? ヘルプやヒントをいただければ幸いです。
ありがとうございました
編集:
「vps.my-domain.com:30519」にアクセスすると、nginx のウェルカム ページが表示されます。ただし、構成でポート :80 を指定しました。get services の出力からポートを取得しました。
core@vps ~/k8 $ kubectl get services --all-namespaces | grep "my-nginx"
default my-nginx ClusterIP 10.107.5.14 <none> 80/TCP 1h
追加することで、ポート:80でも動作するようになりました
externalIPs:
- 31.214.xxx.xxx
my-nginx サービスに。しかし、これは機能するはずの方法ではありませんよね?kubernetes と ingress-nginx のチュートリアルと例では、externalIP なしで常に機能していました。また、イングレス ルールが機能しなくなりました (例: パスを /test に設定した場合)。