kubernetes - 无法使用服务名访问kubernetes服务

标签 kubernetes istio

我有本地 kubernetes 集群。我已经部署了我的应用程序并公开为 ClusterIP 服务。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp 
  template:
    metadata:
      labels:
        app: myapp
        version: v1 
    spec:
      containers:
      - name: myapp
        image: myrepo:5000/myapp
        imagePullPolicy: Always
        ports:
        - containerPort: 8088
      imagePullSecrets:
      - name: regcred

我的服务

apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: default
  labels:
    app: myapp
spec:
  selector:
    app: myapp 
  ports:
  - protocol: TCP
    port: 8088
    targetPort: 8088
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: myapp
spec:
  host: myapp

kubectl get svc 给出:

myapp      ClusterIP      10.233.41.178   <none>     8088/TCP    13m

我可以使用 ClusterIP 地址 curl 访问我的服务,但是当我尝试 curl http://myapp:8088/api 时,它给出。 (从我的主节点运行)

curl: (7) Failed to connect to myapp port 8088: Connection refused

我使用istio服务网格。我在这里缺少什么?

我尝试过以下线程:

unable to access services

can not access to exposed services

最佳答案

这是正常的。我可以通过 kind 和 1 个 nginx 部署以及一项 clusterIP 类型的服务达到相同的状态。

➜  github_api k get svc
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
dev-my-nginx    ClusterIP   10.96.235.85    <none>        80/TCP     3d
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP    3d2h
mysql           ClusterIP   10.97.143.150   <none>        3306/TCP   2d23h
prod-my-nginx   ClusterIP   10.101.89.124   <none>        80/TCP     3d
➜  github_api docker exec -it 212f25f5f073  bash
root@kind-control-plane:/# curl 10.96.235.85
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@kind-control-plane:/# curl dev-my-nginx:80
curl: (6) Could not resolve host: dev-my-nginx
root@kind-control-plane:/#

服务名称仅在集群内部解析,因为 coreDNS(很可能)仅在集群内工作。如果您想从每个工作节点访问该服务,请使用 NodePort 类型的服务。

PS。我不是100%确定。将仔细检查是否有其他选项并更新此评论。

PS2 你可以这样做:

k port-forward svc/dev-my-nginx :80

然后您可以从端口转发的节点进行curl

关于kubernetes - 无法使用服务名访问kubernetes服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63736606/

相关文章:

redis - 调试 istio 限速处理程序

kubernetes - Istio Mesh Federation位置感知

kubernetes - 在 GKE 中安装 istio 时出错 = 服务器找不到请求的资源(发布 `gatewaies.networking.istio.io`)

kubernetes - Helm 插值

python - Celery 'Error: No nodes replied within time constraint' 错误 - 如何调试?

docker - 如何使用 secret .env var而不将其暴露在存储库中

kubernetes - Istio 普罗米修斯联盟

kubernetes - Istio(0.7.1) : Circuit Breaker Doesn't work for httpConsecutiveErrors

kubernetes - GKE- sudo docker ps 在部署运行时不返回任何内容

java - JcaPEMKeyConverter 由可选依赖项 BouncyCaSTLe 提供。要使用对 EC key 的支持,您必须显式添加对类路径的依赖