CLI部署暴露工作时Kubernetes服务文件不工作(连接被拒绝)

iq0todco  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(106)

我已经创建了一个本地Minikube集群,然后是一个hello-world示例的部署。激活后,将同时创建一个服务。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  selector:
    matchLabels:
      run: hello-world-example
  replicas: 2
  template:
    metadata:
      labels:
        run: hello-world-example
    spec:
      containers:
        - name: hello-world
          image: gcr.io/google-samples/hello-app:2.0 # Works
          ports:
            - containerPort: 8080
              protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: hello-app-service
spec:
  # type: NodePort
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: hello-world
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080
    # nodePort: 31579

我使用kubectl apply-f hello-app.yaml应用部署和服务,最终得到以下示例服务:
| 名称空间|名称|目标端口|网址|
| - -----|- -----|- -----|- -----|
| 缺省|hello-app-service|八零八零|http://IP:31813|
| 缺省|库贝尔内特斯|无节点端口||
| 库贝系统|库贝-德恩斯|无节点端口||
注:我的实际IP其实不是“IP”
当我 curl hello-app-service的URL时,我最终得到这样的结果:
curl:(7)0 ms后无法连接到IP端口31813:连接被拒绝
但是,当我使用kubectl expose deployment hello-world --type=LoadBalancer --port=8080在CLI中手动公开部署服务时
我得到以下结果:
| 名称空间|名称|目标端口|网址|
| - -----|- -----|- -----|- -----|
| 缺省|hello-app-service|八零八零|http://IP:31813|
| 缺省|你好世界|八零八零|http://IP:32168|
| 缺省|库贝尔内特斯|无节点端口||
| 库贝系统|库贝-德恩斯|无节点端口||
在我 curl 新服务“hello-world”的URL之后,我以正确的结果结束:
Hello,world!版本:2.0.0主机名:你好世界5 bb 7 fff 796-fmwl 8
有人能解释一下我的服务有什么问题吗?为什么CLI服务工作,而.yaml文件服务不工作,尽管使用相同的配置。我已经使用与CLI命令相同的服务设置(使用LoadBalancer类型)以及NodePort和设置特定端口进行了测试。

**版本:**操作系统:Ubuntu 22.04.2 LTS Docker版本:24.0.2 Kubectl版本:客户端版本:v1.27.2 Kustomize版本:v5.0.1服务器版本:v1.26.3 Minikube版本:v1.30.1

sigwle7e

sigwle7e1#

我会更改服务的选择器,使其正确Map到您的部署。此外,您可以在清单中手动分配外部IP:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  selector:
    matchLabels:
      run: hello-world-example
  replicas: 2
  template:
    metadata:
      labels:
        run: hello-world-example
    spec:
      containers:
        - name: hello-world
          image: gcr.io/google-samples/hello-app:2.0 # Works
          ports:
            - containerPort: 8080
              protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: hello-app-service
spec:
  # type: NodePort
  type: LoadBalancer
  selector:
    run: hello-world-example
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080
  externalIPs:
  - 34.74.203.201

EDITKubernetes service external ip pending您可以随时将服务更改为NodePort或IngressController,但由于您运行的是minikube,因此有一个“魔术命令”:

minikube tunnel

https://minikube.sigs.k8s.io/docs/handbook/accessing/

相关问题