私はWindowsでdockerデスクトップを使用しています。Pythonウェブアプリのdockerイメージを持っています。コンテナを実行して、http://localhost:9090としてホストにアクセスできます。
現在、以下のデプロイメント yaml を使用して Kubernetes クラスター上で実行しようとしています。
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask
namespace: dev
labels:
app: flask
spec:
replicas: 3
selector:
matchLabels:
app: flask
template:
metadata:
labels:
app: flask
spec:
containers:
- name: flask
image: myubuntu
imagePullPolicy: Never
resources:
requests:
cpu: "500m"
memory: "500Mi"
ports:
- containerPort: 9090
---
apiVersion: v1
kind: Service
metadata:
name: flask
namespace: dev
spec:
type: NodePort
selector:
app: flask
ports:
- protocol: TCP
port: 9090
targetPort: 9090
それから私は走りました:
kubectl apply -f deployment.yaml
kubectl get service
それは私に次のものを与えました:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
flask NodePort 10.110.188.94 <none> 9090:30007/TCP 10m
しかし、ホストからアクセスすることはできません
curl http://localhost:9090
curl http://localhost:30007
curl http://10.110.188.94:9090
curl http://10.110.188.94:30007
ホストから Web アプリにアクセスする方法を知っている人はいますか?
答え1
分かりました。NodePortサービスを削除し、代わりにLoadBalancerを作成しました
kubectl expose deployment flask --type="LoadBalancer" -n dev
今、localhost:9090でアプリにアクセスできるようになりました