首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes pod拒绝相互连接

Kubernetes pod拒绝相互连接
EN

Stack Overflow用户
提问于 2019-08-22 23:02:33
回答 2查看 81关注 0票数 0

我正在尝试通过Minikube在Kubernetes中实现一个ElasticStack。我刚刚开始,因为我基本上是从头开始写所有东西来更好地理解K8s,而且因为Elastic提供的yml没有提供任何解释为什么要做什么,所以我在做我自己的事情。

我遇到的问题是,我的Kibana-pod无法与我的ElasticSearch-pod通信,尽管我已经在我的pod上设置了必要的服务和端口。

奇怪的是

代码语言:javascript
复制
kubectl port-forward services/elastic-http 9200

工作完美,让我可以从我的ElasticSearch pod中获取信息。然而,当我通过进入一个pod时

代码语言:javascript
复制
kubectl exec -it <pod-name> -- /bin/bash

并尝试使用curl来获取我的浏览器刚刚显示的相同信息,连接被拒绝,我的pod不能相互通信。

我的配置如下所示。

Kibana.yml

代码语言:javascript
复制
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: my-kb
  namespace: default
spec:
  selector:
    matchLabels:
      app: kibana
  template:
    metadata:
      name: kibana
      labels:
        app: kibana
    spec:
      containers:
      - name: kibana
        image: docker.elastic.co/kibana/kibana:7.3.0
        ports:
        - containerPort: 5601
          name: kibana-web
        volumeMounts:
        - name: kb-conf
          mountPath: /usr/share/kibana/config/kibana.yml
          subPath: kibana.yml
      volumes:
        - name: kb-conf
          configMap:
            name: kibana-config
            items:
            - key: kibana.yml
              path: kibana.yml
---
kind: Service
apiVersion: v1
metadata:
  name: kibana-http
  namespace: default
spec:
  selector:
    app: kibana
  ports:
    - protocol: TCP
      port: 5601
      name: kibana-web
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: kibana-config
  namespace: default
data:
  kibana.yml: |
    elasticsearch.hosts: ["http://elastic-http.default.svc:9200"]

ElasticSearch.yml

代码语言:javascript
复制
kind: PersistentVolume
apiVersion: v1
metadata:
  name: elastic-pv
  namespace: default
spec:
  capacity:
    storage: 15Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: elastic-pv-claim
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 15Gi
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: elastic-deploy
  namespace: default
spec:
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      name: elasticsearch
      labels:
        app: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
          ports:
          - containerPort: 9200
            name: elastic-http
            protocol: TCP
          - containerPort: 9300
            name: node-sniffer
            protocol: TCP
          #readinessProbe:
          #  httpGet:
          #    port: 9200
          #  periodSeconds: 5
          volumeMounts:
          - name: elastic-conf
            mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
            subPath: elasticsearch.yml
          - name: elastic-data
            mountPath: /var/data
          securityContext:
            privileged: true
      initContainers:
      - name: sysctl-adj
        image: busybox
        command: ['sysctl', '-w', 'vm.max_map_count=262144']
        securityContext:
          privileged: true
      volumes:
        - name: elastic-data
          persistentVolumeClaim:
            claimName: elastic-pv-claim
        - name: elastic-conf
          configMap:
            name: elastic-config
            items:
            - key: elasticsearch.yml
              path: elasticsearch.yml
---
kind: Service
apiVersion: v1
metadata:
  name: elastic-http
  namespace: default
spec:
  selector:
    app: elasticsearch
  ports:
    - port: 9200
      targetPort: elastic-http
      name: elastic-http
    - port: 9300
      targetPort: node-sniffer
      name: node-finder
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: elastic-config
  namespace: default
data:
  elasticsearch.yml: |
    xpack.security.enabled: false
    node.master: true
    path.data: /var/data
    http.port: 9200
EN

回答 2

Stack Overflow用户

发布于 2019-08-22 23:20:38

我认为你有clusterIP服务类型,如果你想在浏览器中看到它,其中一个选项是将服务类型设置为NodePort。

您可以查看更多详细信息here

票数 0
EN

Stack Overflow用户

发布于 2019-08-23 03:32:00

我不确定服务中的这一部分:

代码语言:javascript
复制
targetPort: elastic-http
targetPort: node-sniffer

您是否可以尝试删除它们,然后重试

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57612266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档