我试图在k8s上本地运行一个应用程序,但是我无法到达它。
这是我的工作:
apiVersion: apps/v1
kind: Deployment
metadata:
name: listings
labels:
app: listings
spec:
replicas: 2
selector:
matchLabels:
app: listings
template:
metadata:
labels:
app: listings
spec:
containers:
- image: mydockerhub/listings:latest
name: listings
envFrom:
- secretRef:
name: listings-secret
- configMapRef:
name: listings-config
ports:
- containerPort: 8000
name: django-port
这是我的服务
apiVersion: v1
kind: Service
metadata:
name: listings
labels:
app: listings
spec:
type: NodePort
selector:
app: listings
ports:
- name: http
port: 8000
targetPort: 8000
nodePort: 30036
protocol: TCP
在这个阶段,我不想使用其他方法,如入口或ClusterIP,或负载均衡器。我想让nodePort发挥作用,因为我正在努力学习。
当我运行kubectl get svc -o wide
时我看到
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
listings NodePort 10.107.77.231 <none> 8000:30036/TCP 28s app=listings
当我运行kubectl get node -o wide
时我看到
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready control-plane,master 85d v1.23.3 192.168.49.2 <none> Ubuntu 20.04.2 LTS 5.10.16.3-microsoft-standard-WSL2 docker://20.10.12
当我运行minikube ip
时,它显示了192.168.49.2
我试着打开http://192.168.49.2:30036/health
,但不是打开This site can’t be reached
如何对外公开我的应用程序?
请注意,我已经创建了所需的configmap和秘密对象。还请注意,这是一个简单的django restful应用程序,如果您到达/health端点,它将返回成功。仅此而已。因此,应用程序没有问题。
发布于 2022-08-16 04:36:07
这是因为您的本地和minikube不在同一网络段,因此您必须做更多的事情来访问windows上的minikube服务。
第一
$ minikube service list
这将显示您的服务细节,包括名称、url、nodePort、targetPort。
然后
$ minikube service --url listings
它将打开一个端口来侦听您的windows机器,该端口可以将流量转发到minikube节点端口。
也可以使用命令kubectl port-forward
在主机端口上公开服务,例如:
kubectl port-forward --address 0.0.0.0 -n default service/listings 30036:8000
然后尝试使用http://localhost:30036/health
https://stackoverflow.com/questions/73368691
复制相似问题