vim tips

移動 キー 説明 } / { 次/前の空行へ移動 % 対応する括弧へ移動 Operator と Text Object Operator 説明 c change d delete y yank v visual Text Object は i(inner: 内側のみ)と a(a: 囲み文字も含む)の2種類がある。 Text Object 説明 iw 単語の内側 aw 単語 + 周囲の空白 i" "..." の内側 a" "..." 全体(引用符含む) i( (...) の内側 a( (...) 全体(括弧含む) i{ {...} の内側 a{ {...} 全体(波括弧含む) it HTMLタグの内側 at HTMLタグ全体(タグ含む) 例 説明 ciw 単語を削除して挿入モード di" ダブルクォート内を削除 ya( 括弧ごとコピー 参考 なれる! Vimmer

February 1, 2026 · Ken Kato

Kubernetesをv1.30からv1.31にアップグレードした

自宅で運用しているKubernetesクラスターをv1.30からv1.31にアップグレードしました。 kubeadmを使った標準的なアップグレード手順ですが、忘れがちなので備忘録として残しておきます。 公式ドキュメント: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ コントロールプレーンノードのアップグレード コントロールプレーンノードから順番にアップグレードしていきます。 パッケージリポジトリの変更 まず、yumリポジトリの設定ファイルをv1.31用に変更します。 変更前(v1.30): [kkato@nuc01 ~]$ cat /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni 変更後(v1.31): $ cat /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni 参考: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/change-package-repository/ kubeadmのアップグレード まずkubeadmパッケージをアップグレードします。 sudo yum upgrade kubeadm --setopt=disable_excludes=kubernetes アップグレード可能なバージョンを確認します。 sudo kubeadm upgrade plan Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply': COMPONENT NODE CURRENT TARGET kubelet nuc01 v1.30.1 v1.31.14 kubelet nuc02 v1.30.1 v1.31.14 kubelet nuc03 v1.30.1 v1.31.14 kubelet nuc04 v1.30.1 v1.31.14 Upgrade to the latest stable version: COMPONENT NODE CURRENT TARGET kube-apiserver nuc01 v1.30.4 v1.31.14 kube-controller-manager nuc01 v1.30.4 v1.31.14 kube-scheduler nuc01 v1.30.4 v1.31.14 kube-proxy 1.30.4 v1.31.14 CoreDNS v1.11.1 v1.11.3 etcd nuc01 3.5.12-0 3.5.24-0 You can now apply the upgrade by executing the following command: kubeadm upgrade apply v1.31.14 アップグレードを実行します。 ...

January 24, 2026 · Ken Kato

Helmコマンド まとめ

HelmはKubernetes向けのパッケージマネージャーで、複雑なアプリケーションのデプロイを簡単にしてくれるツールです。 Helmコマンドをよく忘れてしまうので、基本的なコマンドを備忘録としてまとめました。 リポジトリの追加 # リポジトリを追加する helm repo add stable https://charts.helm.sh/stable helm repo add bitnami https://charts.bitnami.com/bitnami リポジトリの一覧表示 # 追加されているリポジトリを確認する helm repo list リポジトリの更新 # リポジトリのインデックスを更新する(新しいチャートバージョンを取得) helm repo update チャートの検索 # リポジトリからチャートを検索する helm search repo nginx helm search repo mysql チャート情報の表示 # チャートの詳細情報を表示する helm show chart bitnami/nginx helm show values bitnami/nginx インストール # チャートをインストールする helm install my-nginx bitnami/nginx # 名前空間を指定してインストール helm install my-nginx bitnami/nginx -n production --create-namespace # カスタム値でインストール helm install my-nginx bitnami/nginx --set service.type=LoadBalancer リリース一覧の表示 # インストール済みのリリースを表示する helm list # 全ての名前空間のリリースを表示する helm list -A # 特定の名前空間のリリースを表示する helm list -n production リリース情報の確認 # リリースの詳細情報を表示する helm get all my-nginx # リリースの設定値を表示する helm get values my-nginx # リリースの履歴を表示する helm history my-nginx アップグレード # リリースをアップグレードする helm upgrade my-nginx bitnami/nginx # 新しい値でアップグレード helm upgrade my-nginx bitnami/nginx --set image.tag=1.21.0 ロールバック # 前のバージョンにロールバックする helm rollback my-nginx # 特定のリビジョンにロールバックする helm rollback my-nginx 2 アンインストール # リリースを削除する helm uninstall my-nginx # 名前空間を指定して削除 helm uninstall my-nginx -n production ドライラン 実際にはインストールせずに、何が実行されるかを確認できます。 ...

December 27, 2025 · Ken Kato

kubectlで全てのリソースをgetする方法

kubectl get allだとCustom Resourceが表示されないので、全てのリソースが表示できずに困ることがありました。kubectl api-resourcesを使えば、Custom Resourceを含めた全てのリソースを表示することができます。 全てのリソースを表示する 以下のコマンドで、特定のnamespaceに存在する、全てのリソース(Custom Resourceも含めて)を表示することができます。 kubectl get $(kubectl api-resources --verbs=list --namespaced -o name | grep -v "events" | tr '\n' ',' | sed 's/,$//') -n openebs kubectl api-resources: クラスター内のCustom Resourceを含む全てのKubernetesリソース名を表示 --verbs=list: list操作が可能なものに絞る --namespaced: 名前空間に属するリソース名に絞る (NamespaceやNodeなどのcluster-scopedリソースは対象外) -o name: kubectlでgetできるリソース名だけを出力 grep -v "events": eventsリソースは大量に出力されてしまうため、除外する tr '\n' ',': 出力されたリソース名を、改行区切りからカンマ区切りに変換 sed 's/,$//': 末尾に付いてしまった余分なカンマを削除

August 11, 2025 · Ken Kato

kubectlとjqコマンドの便利な組み合わせ

jqコマンドとは、JSON形式のデータを処理・変換するためのコマンドです。 普段はkubectlやAWS CLIと組み合わせて使うことが多いのですが、使い方やオプションをきちんと調べたことがなかったため、改めておさらいしようと思います。 keys関数 これまではjq '.'のように全階層をまとめて表示してキーを把握していましたが、keys関数を使うと一階層ずつキーを表示できます。 # labelのキーを取得する kubectl get pod my-pod -o json | jq '.metadata.labels | keys' select関数 select関数は条件にマッチした項目のみを抽出します。 # Running状態ではないPodの一覧を取得する kubectl get pods -A -o json | jq '.items[] | select(.status.phase != "Running") | .metadata.name' # namespace、Pod名、Podの状態も合わせて表示する kubectl get pods -A -o json | jq -r '.items[] | select(.status.phase != "Running") | "\(.metadata.namespace) \(.metadata.name) \(.status.phase)"' | column -t 2つ目のコマンドではいくつかのオプションや機能を使っているため、それらについて説明します。 -r: ダブルクォートを削除するオプション(デフォルトでは"が付いてくる) "\(filter)": 文字列の中で \(filter) を使うことで、抽出した値を文字列に埋め込める。これにより、複数の値を空白区切りで1行に表示できる columnt -t: columnコマンドの-tオプションを使うことで、区切り文字を基準に列を揃えて表形式で表示できる contains関数 contains関数は指定した文字列が含まれていればtrueを返します。 # コンテナ名に'ghr.io'を含むPodを検索する kubectl get pods -o json | jq '.items[] | select(.spec.containers[].name | contains("gcr.io")) | .metadata.name' まとめ kubectl と jq の組み合わせは業務でよく使っていたものの、正直ちゃんと理解できていなかった部分も多かったので、今回改めておさらいできてよかったです。 特に keys や select、contains などの関数を使うと、複雑な JSON から必要な情報をサクッと抜き出せるのが便利だなと感じました。 ...

August 10, 2025 · Ken Kato