Can';t使用服务名称访问kubernetes服务

Can';t使用服务名称访问kubernetes服务,kubernetes,istio,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: mya

我有本地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
kubectl get svc
给出:

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

curl:(7)无法连接到myapp端口8088:连接被拒绝

我使用
istio
服务网格。我错过了什么

我尝试了以下线程:


您是否尝试过使用名称空间参数

您可以使用
-n
参数尝试获取特定命名空间的服务/部署:

kubectl获取svc,部署-n默认值
或获取所有命名空间的服务和部署:

kubectl获取svc,部署-A

让我们知道这是否对您有效。您也可以在谷歌控制台的

下在线查看这是正常的。我可以通过nginx的种类和1个部署以及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:/#

然后你可以从端口转发的节点卷曲

应用程序监听端口
8088
,并使用
0.0.0.0
而不是
127.0.0.1
?@ArghyaSadhu我不明白你的意思,我可以使用clusterIP访问,唯一的问题是使用服务名称。哦..好的,那么就这些条款而言是好的..您不能使用
clusterip
从包括节点在内的集群外部键入服务..使用
NodePort
键入已安装的服务。您在coredns或cni插件吊舱中看到任何错误吗?@ArghyaSadhu同时检查了这两个插件吊舱,看不到任何错误。我在这里遗漏了什么?我想知道您如何能够从集群外部(即从kubernetes节点)访问clusterip。你确定吗?据我所知,您需要使用
NodePort
服务。也许尝试一下,我可以看到服务和部署。唯一的问题是我无法使用服务名称访问服务。我可以使用
ClusterIP
访问要按名称访问服务,您有时可以使用
-l
选项和标签名称。例如:
kubectl get svc-n default-l name=myapp
您是否使用
hostNetwork:true
运行nginx pod?我没有设置hostNetwork。这是一个简单的命令式kuberenetes部署。
➜  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:/#
k port-forward svc/dev-my-nginx :80