私はKubernetesのドキュメントでこれに対する答えを探すのに苦労しています。 AWS上で夜遅く明らかな理由もなく再起動しますポッドのKubernetes展開 Kubernetes Podが理由と終了コード0を完了した終了状態になるのはなぜですか?
- Kubernetesバージョン1.4:シナリオは以下のとおりです。 (トラフィック、CPUスパイク、メモリ圧迫、アラートなし...)。この結果、再起動の回数が増えます。
- ログは
- リソースの消費量が正常である、Kubernetesについてのイベントが別のノードまたは類似
- にポッドを再スケジュールを見ることができない(、以前のログを見ることで、すべてそこにエラーを
kubectl -p
を走っていない)、異常は何も表示されません。ポッドを記述すると、COMPLETED
の理由と終了コード0が返され、TERMINATED
という状態が戻されます。kubectl
から正確な出力が得られません。このポッドは現在何度も置き換えられています。
ポッドは、NodeJSサーバのインスタンスである彼らは完全、彼らは常に要求を待って実行されていることができません。
これは、ポッドの内部クーベルネット再配置ですか?これがいつ起こるかを知る方法はありますか?なぜそれが起こったのかというと、どこかのイベントではいけませんか?
アップデートは
これが私たちのprod環境で起こりました。問題のポッドを記載した結果は次のとおり
api: Container ID: docker://7a117ed92fe36a3d2f904a882eb72c79d7ce66efa1162774ab9f0bcd39558f31 Image: 1.0.5-RC1 Image ID: docker://sha256:XXXX Ports: 9080/TCP, 9443/TCP State: Running Started: Mon, 27 Mar 2017 12:30:05 +0100 Last State: Terminated Reason: Completed Exit Code: 0 Started: Fri, 24 Mar 2017 13:32:14 +0000 Finished: Mon, 27 Mar 2017 12:29:58 +0100 Ready: True Restart Count: 1
アップデート2
ここでは、使用deployment.yaml
ファイルである:上記で参照画像の
apiVersion: "extensions/v1beta1"
kind: "Deployment"
metadata:
namespace: "${ENV}"
name: "${APP}${CANARY}"
labels:
component: "${APP}${CANARY}"
spec:
replicas: ${PODS}
minReadySeconds: 30
revisionHistoryLimit: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
component: "${APP}${CANARY}"
spec:
serviceAccount: "${APP}"
${IMAGE_PULL_SECRETS}
containers:
- name: "${APP}${CANARY}"
securityContext:
capabilities:
add:
- IPC_LOCK
image: "134078050561.dkr.ecr.eu-west-1.amazonaws.com/${APP}:${TAG}"
env:
- name: "KUBERNETES_CA_CERTIFICATE_FILE"
value: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
- name: "NAMESPACE"
valueFrom:
fieldRef:
fieldPath: "metadata.namespace"
- name: "ENV"
value: "${ENV}"
- name: "PORT"
value: "${INTERNAL_PORT}"
- name: "CACHE_POLICY"
value: "all"
- name: "SERVICE_ORIGIN"
value: "${SERVICE_ORIGIN}"
- name: "DEBUG"
value: "http,controllers:recommend"
- name: "APPDYNAMICS"
value: "true"
- name: "VERSION"
value: "${TAG}"
ports:
- name: "http"
containerPort: ${HTTP_INTERNAL_PORT}
protocol: "TCP"
- name: "https"
containerPort: ${HTTPS_INTERNAL_PORT}
protocol: "TCP"
Dockerfileデプロイメントマニフェスト:
FROM ubuntu:14.04
ENV NVM_VERSION v0.31.1
ENV NODE_VERSION v6.2.0
ENV NVM_DIR /home/app/nvm
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/v$NODE_VERSION/bin:$PATH
ENV APP_HOME /home/app
RUN useradd -c "App User" -d $APP_HOME -m app
RUN apt-get update; apt-get install -y curl
USER app
# Install nvm with node and npm
RUN touch $HOME/.bashrc; curl https://raw.githubusercontent.com/creationix/nvm/${NVM_VERSION}/install.sh | bash \
&& /bin/bash -c 'source $NVM_DIR/nvm.sh; nvm install $NODE_VERSION'
ENV NODE_PATH $NVM_DIR/versions/node/$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
# Create app directory
WORKDIR /home/app
COPY . /home/app
# Install app dependencies
RUN npm install
EXPOSE 9080 9443
CMD [ "npm", "start" ]
npm start
ポート9080
配備またはrc yamlファイルを投稿してください。また、このトラブルシューティングガイドをご覧ください:https://kubernetes.io/docs/tasks/debug-application-cluster/determine-reason-pod-failure/ – jaxxstorm
投稿されています。この時点で、終了メッセージを表示するために実行中のポッドを変更することはできませんが、今後の展開では間違いなくそのポッドを実行します。 –
cmdがポストされていません。あなたのエントリーポイント/コマンドは何ですか? – jaxxstorm