2016-07-13 7 views
3

Ich habe ein Kubernetes-Cluster-Setup in AWS. Wir verwenden die EC2-Containerregistrierung, um unsere Docker-Images zu speichern. Wir haben die Master/Minions alle Setup und alles scheint mit dem Cluster zu arbeiten.kubernetes und debuggen es im Allgemeinen

ist Meine Spec-Datei wie folgt:

apiVersion: v1 
kind: Service 
metadata: 
    name: apim-mysql 
    labels: 
    app: apim 
spec: 
    ports: 
    # the port that this service should serve on 
    - port: 3306 
    selector: 
    app: apim 
    tier: mysql 
    clusterIP: None 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: apim-mysql 
spec: 
    strategy: 
    type: Recreate 
    template: 
    metadata: 
     labels: 
     app: apim 
     tier: mysql 
    spec: 
     imagePullSecrets: 
     - name: myregistrykey 
     containers: 
     - name: mysql 
     image: <This points to our EC2 Container Registry and retreives the image> 
     resources: 
      requests: 
      cpu: 100m 
      memory: 100Mi 
     env: 
     - name: WSO2_ZIP_FILE 
      value: wso2am-1.10.1-SNAPSHOT.zip 
     - name: WSO2_VERSION 
      value: 1.10.1 
     - name: MYSQL_RANDOM_ROOT_PASSWORD 
      value: 'yes' 
     - name: MYSQL_USER 
      value: username 
     - name: MYSQL_USER_PASSWD 
      value: password 
     - name: GET_HOSTS_FROM 
      value: dns 
      # If your cluster config does not include a dns service, then to 
      # instead access environment variables to find service host 
      # info, comment out the 'value: dns' line above, and uncomment the 
      # line below. 
      #value: env 
     ports: 
     - containerPort: 3306 
      name: mysql 

Was dieser Behälter tut, ist setzt nur eine MySQL-up. Wir benötigen andere Knoten innerhalb des Clusters, um eine Verbindung zu diesem Knoten herzustellen. Weil sie die mysql DB benutzen müssen.

Ich denke, meine erste Frage ist, ist alles in Ordnung mit dieser Spec-Datei? Oder sieht jemand etwas falsch?

ich die kubectl Befehl erstellen und es läuft erfolgreich:

kubectl create -f mysql.yaml 
service "apim-mysql" created 
deployment "apim-mysql" created 

kubectl erhalten Schoten zeigt die Schote Lauf:

apim-mysql-545962574-w2qz1  1/1  Running   1   8m 

ich manchmal, wenn tun kubectl Protokolle erhalten ein Fehler dieser zeigt:

kubectl logs apim-mysql-545962574-w2qz1 
Error from server: dial unix /var/run/docker.sock: no such file or directory 

Aber schließlich versuchen genug, es wird durchlaufen ... wenn jemand in Bildung, warum das passiert, wäre großartig.

Wenn es funktioniert so etwas wie diese:

kubectl logs apim-mysql-545962574-w2qz1 
Initializing database 
2016-07-13T15:51:47.375052Z 0 [Warning] InnoDB: New log files created, LSN=45790 
2016-07-13T15:51:52.029915Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 
2016-07-13T15:51:53.531183Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b837bd45-4911-11e6-99ba-02420af40208. 
2016-07-13T15:51:53.746173Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 
2016-07-13T15:51:53.746621Z 1 [Warning] [email protected] is created with an empty password ! Please consider switching off the --initialize-insecure option. 
2016-07-13T15:52:19.891437Z 1 [Warning] 'user' entry '[email protected]' ignored in --skip-name-resolve mode. 
2016-07-13T15:52:19.891705Z 1 [Warning] 'user' entry '[email protected]' ignored in --skip-name-resolve mode. 
2016-07-13T15:52:19.891733Z 1 [Warning] 'db' entry 'sys [email protected]' ignored in --skip-name-resolve mode. 
2016-07-13T15:52:19.891778Z 1 [Warning] 'proxies_priv' entry '@ [email protected]' ignored in --skip-name-resolve mode. 
2016-07-13T15:52:19.891831Z 1 [Warning] 'tables_priv' entry 'sys_config [email protected]' ignored in --skip-name-resolve mode. 
Database initialized 
MySQL init process in progress... 
2016-07-13T15:52:34.632188Z 0 [Note] mysqld (mysqld 5.7.13) starting as process 49 ... 
2016-07-13T15:52:49.814764Z 0 [Note] InnoDB: PUNCH HOLE support available 
2016-07-13T15:52:49.814846Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 
2016-07-13T15:52:49.814859Z 0 [Note] InnoDB: Uses event mutexes 
2016-07-13T15:52:49.814870Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier 
2016-07-13T15:52:49.814928Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.8 
2016-07-13T15:52:49.814932Z 0 [Note] InnoDB: Using Linux native AIO 
2016-07-13T15:52:50.243657Z 0 [Note] InnoDB: Number of pools: 1 
2016-07-13T15:52:52.175079Z 0 [Note] InnoDB: Using CPU crc32 instructions 
MySQL init process in progress... 
MySQL init process in progress... 
MySQL init process in progress... 
MySQL init process in progress... 
MySQL init process in progress... 
MySQL init process in progress... 
MySQL init process in progress... 

Nach einem wenig es der Schote neu zu starten scheint, und es wird wieder sagen initialisieren Datenbank ..

Vor ein paar Tagen, als ich lief kubectl loggt, es würde sofort alles zurückgeben und sehr schnell sein, jetzt ist es sehr langsam und zeigt nichts wirklich. Ich habe meine Spezifikationsdatei nicht wirklich geändert, also habe ich keine Ahnung, was vor sich geht. Für mich sieht es so aus, als ob der Container nicht richtig ausgeführt wird, wenn er tatsächlich einige Logs anzeigt ... aber ich bin mir nicht sicher.

Wenn irgendjemand Ahnung hat, wie man das mit einigen Befehlen, die ich ausführen kann, weiter debuggt, würde es sehr geschätzt werden. Ich bin an diesem Punkt sehr fest und habe google'd so viel aber ohne Glück gehabt.

danke!

+0

passende ' kubectl describe 'und' kubectl get events' kann Ihnen weitere Informationen geben. – MrE

Antwort

1

Meine Erfahrung Kubernetes auf aws, während sich nicht hilfreich Fehler als

Error from server: dial unix /var/run/docker.sock: no such file or directory 

aufgelöst wurde von choosing a more hefty aws cluster instance type ... hier sind relevant env vars

export MASTER_SIZE=t2.medium 
export NODE_SIZE=t2.medium 
export NUM_NODES=2 # if not defined aws will auto guess 

... auch entfernen Erwähnung der Ressource mit Begrenzung Einstellungen unter Tag resources bis nach dem Start OK

Folgende Befehle sind notwendig ...nur Erwähnung Namensraum verlassen aus, wenn Sie nicht Schoten --namespace = xxx

verwenden

kubectl svc --namespace beschreiben = xxx

kubectl erhalten

kubectl beschreiben Schoten --namespace = xxx

kubectl beschreiben Knoten

auch schön ist die Fähigkeit eine Live bearbeiten einer Bereitstellung auszuführen ... zuerst Ihre Implementierungen sehen .. Ausgabe

kubectl get deployments --namespace=ruptureofthemundaneplane 

... Ausgang

NAME     DESIRED CURRENT UP-TO-DATE AVAILABLE AGE 
loudspeed-deployment 1   1   1   1   1h 
mongo-deployment  1   1   1   1   1h 

jetzt wissen wir Namen Bereitstellung Live bearbeiten Ausgabe

kubectl edit deployment/mongo-deployment 

die Standard-Editor bearbeitet Sitzung in Ihrem Terminal öffnet zu tun, wo Sie ändern können Einstellungen nach Wunsch

Ich finde bei der Fehlersuche eine Datenbank-Bereitstellung ist es praktisch, auch ein Bild unter Verwendung von Dockerfile zu starten ... dies ermöglicht Ihnen die Anmeldung mit exec wie

kubectl exec -ti $(kubectl get pods --namespace=${PROJECT_ID}|grep ${GKE_NODEDEPLOYMENT}|cut -d' ' -f1) --namespace=${PROJECT_ID} -c ${GKE_NGINX} -- bash 

wo Sie frei sind interaktive Datenbank-Login-Session zu tun (wenn Sie in unten Dockerfile gleichen benötigten Client-Code oder setzen installieren) ... hier wird Dockerfile für dieses Problem Einsatz Container

FROM ubuntu:16.04 

ENV TERM linux 
ENV DEBIAN_FRONTEND noninteractive 

RUN apt-get update 
RUN apt-get install -y wget curl 

COPY .bashrc /root/ 

# ENTRYPOINT ["/bin/bash"] 
CMD ["/bin/bash"] 


# 
# docker build --tag stens_ubuntu . 
# 
# docker run -d stens_ubuntu sleep infinity 
# 
# docker ps 
# 
# 
# ... find CONTAINER ID from above and put into something like this 
# 
# docker exec -ti 3cea1993ed28 bash 
# 
# 
+1

Vielen Dank für diese Antwort. Ich habe das auch entdeckt! Das Erstellen von leistungsfähigeren Instanzen behebt die Probleme. Akzeptiert Ihre Antwort :) –