フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

Kubernetes

【新規ツール探し】kubectl debug で使えるコンテナイメージ「koolkits」

記事作成日:2022/12/08 情報 名前 URL Github https://github.com/lightrun-platform/koolkits 公式サイト デモサイト 開発母体 Lightrun version - 言語 Dockerfile 価格 無料 ライセンス Apache-2.0 license 情報 何ができるもの? 利用シーン 登場背景 …

【新規ツール探し】複数の Kubernetes クラスタにまとめて kubectl を実行できる「kubectl-foreach」が便利

記事作成日:2022/11/30 情報 名前 URL Github https://github.com/ahmetb/kubectl-foreach 公式サイト デモサイト 開発母体 ahmetb 氏 version 0.2.1 言語 Go 価格 無料 ライセンス Apache-2.0 license 情報 何ができるもの? 使い方 正規表現 特定のクラス…

【新規ツール探し】ローカルで簡単に使える Kubernetes が起動できる kind 「何これ楽ちんじゃん」

記事作成日:2022/11/29 情報 名前 URL Github https://github.com/kubernetes-sigs/kind 公式サイト https://kind.sigs.k8s.io/ デモサイト 開発母体 kubernetes-sigs version v0.17.0 言語 Go 価格 無料 ライセンス Apache-2.0 license 情報 何ができるも…

PodDisruptionBudget設定時にでる「Cannot evict pod as it would violate the pod's disruption budget.」の解消法

Pod に PodDisruptionBudget(PDB)設定時に以下のエラーがでました。 error when evicting pods/"nginx-deployment-bc88786fd-fq8wv" -n "pdb-test" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget. この解消法に…

kubernetesで1TBのディスクをつくったら932GBになった話

小話です。 k8s で1TBのディスクを作りました。 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: example-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1T すると 932GB のボリュームが作られました。 NAME CAPACITY…

【備忘】kustomize で resource に外部ディレクトリの一部のリソースを指定する

kubernetes - referring a resource yaml from another directory in kustomization - Stack Overflow . ├── base │ ├── main │ │ ├── kustomization.yaml │ │ └── resource.yaml │ └── stuff │ ├── first.yaml │ └── kustomization.yaml └── cluster └── ku…

GKEでkube-dnsのメトリクスを取りたい話

GCP上のkube-dnsはその裏側にdnsmasqとskydnsが存在しています。 その二つの違いはRedHatの資料に詳しく書かれており OpenShiftの内部DNSについて語る...のではなく、dnsmasqとgdbで遊ぶ話 - 赤帽エンジニアブログ 上記のように紹介されています。GKEだと少…

ArgoCD Notificationで失敗検知の時間を短くする方法

ArgoCD Notificationでmanifestの適用後の失敗検知をしていると、10分経たないと通知がされません。これを短くする方法です。 方法 Statefulset / DaemonSetの場合はExceededの処理がArgoCDに見当たらなかったのでその状態にならなさそう。 Deploymentの場合…

ArgoCDにおけるステータスの意味をコードを追って調べた

結論 調査過程(コードリーディング) 普通の場合(ArgoCDによって用意されているやつ) 独自に定義する場合(Applicationなど) 結論 ArgoCDにおけるSync-Operationのステータスの意味は以下の通りです。 種類 状態 Healthy 正常 Progressing 正常ではないが、…

ArgoCDとExternalSecretを併用するときにSecret上書き問題を解消する

ほぼほぼ独力で調べ切った後に全く同じ悩みにヒットした方の記事が出てきた。 argocdでSSOしたいときにclientSecretをSealedSecretで保持したい - うさだのブログ 問題 ArgoCDは自分自身でSecret(argo-secret)を作成します。 それとは別にSSOの設定などをExt…

GKE IngressでCustom Headerを少し触ってみる

GKEのIngress=外部HTTP(S)ロードバランサを触ってカスタムヘッダの追加や上書きの挙動を確認してみます。 使用したのは以下のmanifestです。 apiVersion: v1 kind: Service metadata: name: web annotations: cloud.google.com/neg: '{"ingress": true}' cl…

備忘:GKE CSIでPVCを作成するときに発生したエラー

Warning ProvisioningFailed 1s (x2 over 3s) pd.csi.storage.gke.io_gke-5e27e4c13f914c63a047-5131-44b0-vm_d6569e4a-5b72-46f5-9b98-2b1a87a061a3 failed to provision volume with StorageClass "regionalpd-storageclass": rpc error: code = Internal …

kubectl apply / diff をxargsを使って高速で終わらせる

kubectl diff -f . ↓ ls . | xargs -t -P$(ls | wc -l) -I {} kubectl diff -f {} or ls . | xargs -t -P$(ls | wc -l) -I {} sh -c 'kubectl diff -f {} | tee -a /tmp/diff/{}.diff' kubectl apply -f . ↓ ls . | xargs -t -P$(ls | wc -l) -I {} kubectl …

Graceful Node Shutdown についてまとめ

Graceful Node Shutdown とは? 通常PodとクリティカルPodの話 Critical Podに設定する方法 この記事を読んだ内容を備忘がてらまとめます。 kubernetes.io Graceful Node Shutdown とは? Graceful Shutdownとは「通常のShutdownと比べて丁寧に停止する機能…

トポロジー単位でpodの割り当てを管理するTopologySpreadConstraintsについて

TopologySpreadConstraints とは? NodeSelectorやNodeAffinityとの併用 Multiple TopologySpreadConstraints NodeSelector&AffinityとMultiple TopologySpreadConstraintsの違い この記事で紹介されていた「TopologySpreadConstraints」について備忘がてら…

スパイク時のスケーリングの仕組みを自分で考えてみる

はじめに 世の中にはすごいエンジニアや、よりよい物を作ろうと工夫しているエンジニアがたくさんいます。しかもその工夫や苦労をネットに公開してくれていることさえあります。 本になっているわけではないので体系的に学ぶことはできないのですが、そこで…

2021年のk8sとストレージ管理で気になったことを調べる

Kubernetes Native Storage OpenEBSができること NVMe-oFのCSI Driver PersistentMemoryとCSI Driver PersistentMemory(永続メモリ:PMEM)とは PMEMの使い方 PMEMを使っている製品 PMEM用のCSI オブジェクトストレージ向け標準I/F(COSI) ストレージ(CSI)の自…

EKS設計ノウハウまとめ

読むべきドキュメント 公式ドキュメント:https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/what-is-eks.html EKSベストプラクティス:https://jawsdays2019.jaws-ug.jp/session/1918/ EKSベストプラクティス:https://aws.github.io/aws-eks-best-p…

【備忘録】Kubernetesカスタムコントローラーへの道 を読んだ

これを買って読みました。記憶しておきたいところなどまとめ。 OD>実践入門Kubernetesカスタムコントローラーへの道 /インプレスR&D/磯賢大posted with カエレバ楽天市場Amazon 章構成 第1章 CRDとController 第2章 client-goと知っておくべ…

Linkerdを用いたAWSでのスループット向上の事例を読んで学ぶ

はじめに 今回紹介する記事 背景 課題 解決策 学び はじめに 世の中にはすごいエンジニアや、よりよい物を作ろうと工夫しているエンジニアがたくさんいます。しかもその工夫や苦労をネットに公開してくれていることさえあります。 本になっているわけではな…

ZOZOのAPI Gatewayの事例を読み込んでみて理解して&学びを得る

はじめに 今回紹介する記事 ZOZOTOWNについて ZOZOTOWNにおけるAPI Gateway 自分だったらどう考えるか? 個人的に勉強になる点 ドキュメンテーション & スキーマ テスト API Gatewayをカナリアリリースする まとめ はじめに 世の中にはすごいエンジニアや、…

Podにannotationやlabel情報をマウントして環境ごとに振る舞いを変えられるようにする

ユースケースとしてマルチクラスタのKubernetesなどを利用している場合、同じPodであってもロケーションや役割によってびみょーにやりたいことや振る舞いを変えたいケースがあります。かといって少しづつ変更するのは面倒…。 たいていのケースの場合、マルチ…

【オンプレ/AWS/GCP】 ClusterIP / NodePort / External IP / Loadbalancer / Ingress / Router の違いとその動き

KubenetesのPodを外部公開する時のそれぞれの流れについて図ありで解説します。 ClusterIP ClusteIPの振り分けについて NodePort External IP LoadBalancer クラウドの場合 オンプレの場合 Ingress クラウドの場合 オンプレの場合 Router(Openshift) Cluster…

CNIのCiliumについて調べてみた

調査テーマ Ciliumとは? / 登場背景 / 解決すること Ciliumとは? 登場背景 Ciliumが解決すること eBPF(extend Berkeley Packet Filter)とは? XDP(eXpress DataPath)とは? Ciliumができること/他との違い Nodeを跨ぐ通信の実現(CNI) ロードバランシング …

EKSにおけるIMDSについて調べてみた

EKSを使う際に注意すべきという情報をゲットしたのでまとめます。 Amazon EKS セキュリティのベストプラクティス - Amazon EKS IMDSとは? ちなみに脆弱性の対象になることも… EKSにおけるIMDS 結局どうすればいい? 注意事項 IMDSとは? AWS EC2におけるイ…

Volterraについて調べてみた(更新中)

用語 Namespaces Podを外部公開する Origin Pool Origin Poolの設定 Site内のネットワークトポロジー singleNICの場合 Multi NIC(以上) の場合 Clusterに対するVIP Site間のトポロジー Regional Edge(RE)の接続 Site-Site間の接続 仮想ネットワーク Network …

Kubernetesでマルチクラスタネットワークを実現する方法

Kubernetesでマルチクラスタネットワークを実現する方法について簡単に調査した。鋭意更新中。 skupper Submariner Istio 複数のコントロールプレーントポロジ 単一のコントロールプレーントポロジ VPN接続を備えた単一のコントロールプレーン VPN接続のない…

Pod sandbox changed, it will be killed and re-created. の解消法

誰かの役に立てば・・・ kubernetesで以下のエラーが出ました Normal SandboxChanged 5m21s (x5 over 6m40s) kubelet, xxxx Pod sandbox changed, it will be killed and re-created. Warning BackOff 105s (x20 over 5m20s) kubelet, xxx Back-off restarti…

AWS EKSで動かした時にkubeletとの接続失敗を解消する方法

問題 EKSにてdatadog agentをDamonSetで動かしkube-state-metricsを導入すると以下のようなエラーが発生します。 2020-07-21 04:58:16 UTC | CORE | ERROR | (pkg/collector/runner/runner.go:292 in work) | Error running check kubelet: [{"message": "Un…

AWS EKSを使う時の注意点と見ておくべきドキュメントまとめ

EKSを使うにあたって個人的に気になった点をまとめ。 EKSとは コントロールプレーンのアーキテクチャ EKSの開始方法 3種類のクラスターVPCタイプ プライベートクラスタの注意点 IAMユーザがk8sのRBACに追加される クラスタエンドポイントのアクセス 注意 k8s…