[DOCKER] [K8s] Ich habe versucht, zwischen Pods zu kommunizieren!

Einführung

Derzeit werden verschiedene Dienste zu Mikrodiensten. Zu dieser Zeit ist einer der wichtigsten Teile die Kommunikation zwischen Diensten. Darüber hinaus wird bei der Einführung von Mikrodiensten häufig die Entwicklung mithilfe von Kubernetes angewendet.

Schauen wir uns dieses Mal als Kommunikationsmethode zwischen Diensten die Kommunikationsmethode zwischen Pods an, die die minimale Ressource von Kuberntes darstellt.

In Bezug auf die Kommunikationsmethode zwischen Diensten, zusätzlich zur Kommunikation zwischen Pods, Es gibt Kommunikationsmethoden wie gRPC.

Was diesmal zu machen

Lassen Sie uns diesmal ganz einfach den durch die k8s-Bereitstellung erstellten httpd-Server-Pod mit dem nginx-Pod kommunizieren.

httpd

httpd_deployment.yml


apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
spec:
  selector:
    app: httpd
  ports:
  - port: 8090
    targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd
spec:
  replicas: 1
  selector:
    matchLabels:
      app: httpd
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2-alpine
        ports:
        - containerPort: 80

nginx

nginx_deployment.yml



apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx
  ports:
  - port: 8080
    targetPort: 80

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.18-alpine
        ports:
        - containerPort: 80

Versuchen Sie vorerst zu kommunizieren

$ kubectl apply -f httd_deployment.yml -f nginx_deployment.yml 

――Überprüfen Sie, ob Sie richtig aufgestanden sind

$ kubectl get po 

NAME                    READY   STATUS    RESTARTS   AGE
httpd-7f8bd9884-jptwt   1/1     Running   0          4m26s
nginx-d69ddfd76-r4lhq   1/1     Running   0          4m26s

OK, wenn beide Status ausgeführt werden

httpd→nginx

--Geben Sie den httpd-Pod ein

$ kubectl exec -it httpd-7f8bd9884-jptwt sh
/ # 
/ # curl http://nginx-svc:8080

<!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>
 

nginx→httpd --Geben Sie die Nginx-Kapsel ein

$ kubectl exec -it nginx-d69ddfd76-r4lhq sh
/ # curl http://httpd-svc:8090
<html><body><h1>It works!</h1></body></html>

Ich konnte bestätigen, dass ich darauf zugreifen konnte.

Recommended Posts

[K8s] Ich habe versucht, zwischen Pods zu kommunizieren!
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe es mit Spring versucht.
Ich habe versucht, Tomcat zu setzen
Ich habe youtubeDataApi ausprobiert.
Ich habe versucht, ① umzugestalten
Ich habe FizzBuzz ausprobiert.
Ich habe JHipster 5.1 ausprobiert
[Ich habe es versucht] Spring Tutorial
Ich habe versucht, Gson zu benutzen
Ich habe sofort QUARKUS ausprobiert
Ich habe versucht, TestNG zu verwenden
Ich habe Spring Batch ausprobiert
Ich habe versucht, Galasa zu benutzen
Ich habe versucht, node-jt400 (Programme)
Ich habe versucht, node-jt400 (ausführen)
Über die Kommunikation zwischen Containern
Unterschied zwischen i ++ und ++ i
Ich habe versucht, node-jt400 (Transaktionen)
Ich habe versucht, die ähnliche Funktion durch asynchrone Kommunikation zu implementieren
Ich habe versucht, node-jt400 (Umgebungskonstruktion)
Ich habe DI mit Ruby versucht
Ich habe versucht, node-jt400 (IFS schreiben)
Ich habe versucht, Azure Cloud-Init zu verwenden
Ich habe Spring State Machine ausprobiert
Ich habe Drools (Java, InputStream) ausprobiert.
Ich habe Rails Anfänger ausprobiert [Kapitel 1]
Ich habe versucht, Apache Wicket zu verwenden
Ich habe versucht, node-jt400 (SQL-Abfrage)
Ich habe versucht, Java REPL zu verwenden
Ich habe versucht, den Quellcode zu analysieren
Ich habe das FizzBuzz-Problem ausprobiert
Ich habe versucht, node-jt400 (SQL-Stream)
Ich habe versucht, node-jt400 (IFS lesen)
Ich habe Rails Anfänger ausprobiert [Kapitel 2]
Ich habe UPSERT mit PostgreSQL ausprobiert.
Ich habe BIND mit Docker ausprobiert
Ich habe versucht, yum-cron zu verifizieren
Ich habe versucht, Metaprogrammierung mit Java