web-dev-qa-db-ja.com

Kubernetes + Minikube-すべてのstdout出力を確認するにはどうすればよいですか?

Minikubeを使用してKubernetesでRubyアプリを実行しています。

ただし、ログを見ると、アプリをローカルで実行したときにターミナルに表示される出力が表示されません。

Stderrしか表示されないからだと思いますか?

すべてのタイプのコンソールログを表示するにはどうすればよいですか(たとえば、putsまたはraiseから)?

見回すと、これはデタッチモードになっていることと関係があります-Python関連の問題を参照してください: Kubernetesポッドのログが表示されない

ありがとう。

=

リクエストに応じて-これがdeployment.yamlです

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: sample
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: sample
    spec:
      containers:
        - name: sample
          image: someregistry
          imagePullPolicy: Always
          command: ["/bin/sh","-c"]
          args: ["bundle exec rake sample:default --trace"]
          envFrom:
          - configMapRef:
              name: sample
          - secretRef:
              name: sample
          ports:
            - containerPort: 3000
      imagePullSecrets:
        - name: regsecret
3
userMod2

この記事に示されているように、kubectl logs pod apodは、ミニクベにデプロイされたポッドのstdoutとstderrを表示するはずです。

Kubernetesのデフォルトでは、Dockerはコンテナのstdoutとstderrをホストシステムの/ var/log/containersの下のファイルに書き込むように設定されています

Kubernetesが追加

システムコンポーネントには、コンテナ内で実行されるものとコンテナ内で実行されないものの2種類があります。
例えば:

  • Kubernetesスケジューラとkube-proxyはコンテナで実行されます。
  • Dockerなどのkubeletとコンテナーランタイムは、コンテナーでは実行されません。

そして:

  • Systemdを搭載したマシンでは、kubeletとコンテナのランタイムがjournaldに書き込みます。
  • Systemdが存在しない場合は、.logディレクトリの/var/logファイルに書き込みます。

コンテナログと同様に、/ var/logディレクトリのシステムコンポーネントログはローテーションする必要があります。
kube-up.shスクリプトによって起動されたKubernetesクラスターでは、これらのログは、logrotateツールによって毎日またはサイズが100MBを超えるとローテーションされるように構成されています。

https://d33wubrfki0l68.cloudfront.net/59b1aae2adcfe4f06270b99a2789012ed64bec1f/4d0ad/images/docs/user-guide/logging/logging-node-level.png

1
VonC

Stderrしか表示されないからだと思いますか?

コンテナまたはポッドの仕様で特定の何かが無効にされていない限り、実際にはそうではありません。 Dockerを使用していると仮定しているので、デフォルトでは出力 stdout and stderr であり、これを実行すると表示されます kubectl logs <pod-name>

すべてのタイプのコンソールログ(プットやレイズなど)を表示するにはどうすればよいですか?

コンテナログに表示されます。ポッドまたはデプロイメントの定義を投稿すると便利です。

0
Rico