k8s(raspberry pi)のpodのログをチャットで観れるか実験してみました。
この後、エラーがログに出てないかも聞いてみました
[用途]
ルール対象外のマニフェストをデプロイさせないための
防止策で利用するイメージになる
[検証]
以下のコマンドを投入する
kubectl label ns default pod-security.kubernetes.io/warn=baseline
[各種コマンドの意味]
1. kubectl label ns default
[マスターノードでの準備と安全確保]
1)etcdctl クライアントのインストール: (未インストールの場合は必要)
apt update
apt install etcd-client
2)etcd バックアップの取得と退避 (最重要):
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \
--key=/etc/kubernetes/pki/apiserver-etcd-client.key \
snapshot save /tmp/etcd_backup_$(date +%Y%m%d_%H%M%S).db
3)ファイルをクラスター外の安全な場所(ローカルPCなど)にコピーします。
環境によって、異なるので割愛します。(おそらくSCPなど待避されるのではと思いますが)
4)Pod Disruption Budget (PDB) の一時削除:
ドレインをブロックするIstioなどのPDBを削除します。
kubectl delete pdb istio-ingressgateway -n istio-system
kubectl delete pdb istiod -n istio-system
[コントロールプレーンのアップグレード]
1)kubeadm バイナリの更新:
apt-mark unhold kubeadm
apt install -y kubeadm=1.34.2-1.1
apt-mark hold kubeadm
2)コアコンポーネントの適用:
kubeadm upgrade apply v1.34.2
3)kubelet と kubectl パッケージの更新:
apt-mark unhold kubelet kubectl
apt install -y kubelet=1.34.2-1.1 kubectl=1.34.2-1.1
4)kubelet の再起動:
systemctl daemon-reload
systemctl restart kubelet
5)パッケージのホールド再設定:
apt-mark hold kubelet kubectl
[ワーカーノードのアップグレード(ノードごとに繰り返し)]
rasp-node1 と rasp-node2 で、以下の手順を1台ずつ実行します。
1)ドレイン(マスターノードで実行):
kubectl drain <ノード名> --ignore-daemonsets --delete-emptydir-data --force
2)ノードの設定更新(ワーカーノードで実行)
対象のワーカーノードにログインし、kubeletの設定を更新します。
kubeadm upgrade node
3)kubelet サービス更新(ワーカーノードで実行)
apt-mark unhold kubelet
apt install -y kubelet=1.34.2-1.1
systemctl daemon-reload
systemctl restart kubelet
apt-mark hold kubelet
4)アンコルドン(マスターノードで実行
kubectl uncordon <ノード名>
[ 最終確認と PDB の再適用]
実行場所: マスターノード (rasp-master)
CRDのインストールが失敗した場合用:
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.25.0
export PATH=$PWD/bin:$PATH
istioctl install --set profile=default -y
egressgateway:(外部用):
helm install istio-egressgateway istio/gateway -n istio-system --set gateways.istio-egressgateway.enabled=true
インストール方法:
brew install stern
GitHubでArgoCD用のトークンを発行します。
->今回は、classicで作成しました。
ArgoCDにログインします。
Settings > Repositoriesを選択
Choose your connection method: VIA HTTPSを選択
Type: gitを選択
Name: 名前を記載(なんでも良いです)
Project: default(適当に選択出来た物を選んだ)
Repository URL: Githubのリポジトリを記載
UserName: githubのユーザ名
Password: 上記、githubで発行したトークンを記載
上記、記載ができたらCONNECTを押す
ApplicationからNEW APPを押す
Application Name : 分かりやすい名前に
Proiect Namel:選択出来た物を選びました。
SYNC POLICY: Automatic
->PRUNE RESORCES
Repository URL: 先ほどのgithubのリポジトリを選択
Revision:HEAD
Path: .
Cluster URL: 選択出来た物を選ぶ
Namespace: デプロイ先のNamespaceを記載
DIRECTORY RECURSE: チェックを入れる(入れないと、デプロイ出来ませんでした)
上記、記載ができたらCREATEを押す
実際にデプロイすると、以下のようになります。
ArgoCD側の様子:
コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...