0

我有一个 opensearch 应用程序,我想通过服务公开它,以便它可以与我得到的 opensearch-dashboard 应用程序通信。当我在 pod 中打开 shell 时,我看到 opensearch 服务器工作正常。

当我运行提取网址时:

cat /etc/hosts

我得到:

opensearch-master-headless-0.opensearch-master-headless.search.svc.cluster.local

如果我在同一个 pod 中运行它,我会得到 200 响应。:

curl -XGET http://opensearch-master-headless-0.opensearch-master-headless.search.svc.cluster.local:9200 -u 'admin:admin' --insecure

如果我从同一命名空间中的仪表板 pod 运行它,它会说它没有解决:

curl -XGET http://opensearch-master-headless-0.opensearch-master-headless.search.svc.cluster.local:9200 -u 'admin:admin' --insecure

我的服务.yml

---
kind: Service
apiVersion: v1
metadata:
  name: {{ .Values.global.appName }} --- evaluates to opensearch
  namespace: {{ .Values.global.namespace }} --- evaluates to search
spec:
  type: ClusterIP
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
    - name: "http"
      protocol: TCP
      port: 9200
    - name: "transport"
      protocol: TCP
      port: 9300
---

但是,如果我使用 opensearch 的 pod IP 地址:

curl -XGET http://<IP-ADDRESS>:9200 -u 'admin:admin' --inse

cure

这适用于 opensearch pod

  • 我正在使用 argocd 进行部署,当我部署 opensearch 应用程序时,它不会在我的服务配置上引发任何错误
4

1 回答 1

0

您可以通过类型NodePort访问Service

---
kind: Service
apiVersion: v1
metadata:
  name: {{ .Values.global.appName }} --- evaluates to opensearch
  namespace: {{ .Values.global.namespace }} --- evaluates to search
spec:
  type: NodePort
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
    - name: "http"
      protocol: TCP
      port: 9200
      nodePort: 30920
    - name: "transport"
      protocol: TCP
      port: 9300
      nodePort: 30930
---

然后,通过节点 k8s 的 IP 调用
(通过命令获取节点 k8s 的 IP kubectl get node -o wide- at field INTERNAL-IP

curl -XGET http://<INTERNAL-IP>:30920 -u 'admin:admin' --insecure

于 2022-01-13T17:10:33.100 回答