जब भी मैं इसे कार्यकर्ता नोड के पते के माध्यम से एक्सेस करने का प्रयास करता हूं, तो यह ठीक से कनेक्ट हो सकता है, लेकिन जब मैं प्रवेश द्वार के माध्यम से पहुंच का प्रयास करता हूं। मुझे निम्नलिखित त्रुटि मिलती है:

pymongo.errors.ServerSelectionTimeoutError
pymongo.errors.ServerSelectionTimeoutError: mongo:27017: timed out, Timeout: 30s, Topology Description: <TopologyDescription id: 60119598e7c0e0d52f58c52c, topology_type: Single, servers: [<ServerDescription ('mongo', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('mongo:27017: timed out',)>]>

इस प्रकार मैं अजगर के माध्यम से मोंगोडीबी से जुड़ता हूं जो प्रवेश यूआरएल पर नहीं पहुंचने पर ठीक काम करता है।

mongo = MongoClient("mongodb://mongo:27017/user_data")

यह मेरी ingress.yaml फ़ाइल है

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: weasel-ingress
spec:
  rules:
  - host: {host-address}
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: weasel
          servicePort: 5000
      - path: /
        pathType: Prefix
        backend:
          serviceName: mongo
          servicePort: 27017

प्रवेश के माध्यम से कनेक्ट करने के लिए इसे कैसे प्राप्त किया जाए इस पर कोई विचार है? मुझे लगता है कि मुझे प्रवेश में मोंगो जोड़ने की ज़रूरत है?

दोनों सेवाएं बाहरी आईपी के माध्यम से पहले ही सामने आ चुकी हैं।

kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)           AGE
kubernetes   ClusterIP      172.21.0.1       <none>           443/TCP           19h
mongo        LoadBalancer   172.21.218.91    {exposed-ip}   27017:31308/TCP   17h
weasel       LoadBalancer   172.21.152.134   {exposed-ip}   5000:32246/TCP    17h

प्रवेश लॉग:

kubectl describe ingress weasel-ingress
Name:             weasel-ingress
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host                                                                                  Path  Backends
  ----                                                                                  ----  --------
  {host-address}  
                                                                                        /   weasel:5000 (172.30.27.69:5000)
                                                                                        /   mongo:27017 (<none>)
Annotations:                                                                            <none>
Events:
  Type    Reason  Age   From                      Message
  ----    ------  ----  ----                      -------
  Normal  CREATE  27s   nginx-ingress-controller  Ingress default/weasel-ingress
  Normal  CREATE  27s   nginx-ingress-controller  Ingress default/weasel-ingress
  Normal  CREATE  27s   nginx-ingress-controller  Ingress default/weasel-ingress
0
Annihil8 28 जिंदा 2021, 14:20

2 जवाब

सबसे बढ़िया उत्तर

प्रवेश ज्यादातर HTTP कनेक्शन के लिए हैं, प्रवेश मोंगोडब तक पहुंचने का विकल्प नहीं है।

आप सेवा प्रकार LoadBalancer या सेवा प्रकार नोड पोर्ट का उपयोग कर सकते हैं।

प्रवेश नियंत्रक (पूर्व Nginx-ingress) सादे टीसीपी लोड बैलेंसर्स का समर्थन कर सकते हैं।

2
Harsh Manvar 28 जिंदा 2021, 14:26

यह मेरी परिनियोजन.yaml के साथ एक समस्या थी। इसे निम्नलिखित में बदलना आवश्यक था:

apiVersion: v1
kind: Service
metadata:
  name: mongo
  labels:
    app: mongo
spec:
  type: LoadBalancer
  ports:
  - port: 27017
    name: http
  selector:
    app: mongo
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo
  template:
    metadata:
      labels:
        app: mongo
        version: v1
    spec:
      containers:
        - name: mongo
          image: mongo:latest
          ports:
          - containerPort: 27017
1
Annihil8 28 जिंदा 2021, 15:05