---
slug: "kubernetes-restart-pod-delay"
title: "Kubernetes Pod を簡易的にローリング再起動する ( ポッドの削除コマンド )"
description: "Kubernetes で `kubectl rollout restart` 後の Pod 再起動が遅いときに確認すべき設定。`terminationGracePeriodSeconds` や preStop hook がボトルネックになりやすい。"
url: "https://www.ytyng.com/blog/kubernetes-restart-pod-delay"
publish_date: "2021-12-11T13:28:40Z"
created: "2021-12-11T13:28:40Z"
updated: "2026-05-11T13:21:29.555Z"
categories: ["kubernetes"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/933e18bc4f3b4d04836bd65b1eb16abd.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# Kubernetes Pod を簡易的にローリング再起動する ( ポッドの削除コマンド )

<p>Kubernets で、Pod の Deployment の中で、コンテナ設定を</p>
<pre><span>apiVersion</span>: apps/v1<br /><span>kind</span>: Deployment<br />metadata:<br />  name: myapp-deployment<br />  namespace: mynamespace<br /><span>spec</span>:<br />  replicas: 2<br />  <span>selector</span>:<br />    <span>matchLabels</span>:<br />      <span>app</span>: myapp<br />  <span>template</span>:<br />    <span>metadata</span>:<br />      <span>labels</span>:<br />        <span>app</span>: myapp<br />    <span>spec</span>:<br />      <span>containers</span>:<br />        - <span>name</span>: myapp<br />          <span>image</span>: myrepo/myapp:<strong>latest</strong><br />          <strong>imagePullPolicy: Always</strong></pre>
<p>みたいに、コンテナタグを latest にして、imagePullPolicy: Always で運用している場合。</p>
<p>この場合、最新コードを反映させるには、<code>kubectl delete pod</code> するわけですが、タイミングをずらしてポッドの削除をかけることでダウンタイムを回避することができます。</p>
<p>kubectl delete pod 自体は、ポッドの削除〜再起動を待ちますが、ポッドの再起動後にアプリの立ち上がりまでダウンタイムがある場合、それを避けます。</p>
<p>よくやるのはこのスクリプト</p>
<p></p>
<h4>restart-pod.sh</h4>
<pre>#!/usr/bin/env zsh<br /><br />if [ -f "${HOME}/.kube/config-xxxx" ]; then<br /> export KUBECONFIG=${HOME}/.kube/config-xxxx<br />fi<br /><br />pods=( $(kubectl get pod -n mynamespace | egrep -o "myapp-deployment-[a-zA-Z0-9-]+") )<br /><br />_sleep=<br />for pod in "${pods[@]}" ; do<br /> ${_sleep}<br /> kubectl -n mynamespace delete pod ${pod}<br /> _sleep="sleep 10s"<br />done</pre>
