Kubenews #8
2021-02-05
配信URL
https://youtu.be/QtHOLScNtXYyoutu.be
各タイトルを押していただくことで、実際の記事に飛びます。
スクリュードライバーとKubernetesを使用したデータベースのマイグレーション
- もともと、DBのマイグレーションは物理サーバー1つの上でshell scriptsを動かすところから、Screwdriverを用いてJavaアプリケーションからパッチファイルを叩くものに変更した。
- 今回は、screwdriverとCronJobを用いて、DBのマイグレーションをするようにした
- DBの文脈におけるマイグレーションって??
- Screwdriver
- Athenz
Self-Service Velero Backups with Kyverno
veleroを使ってバックアップの準備をし、kyvernoのgenerate機能を用いてnirmata.io/auto-backup: enabled
というlabelが付いたNamespaceが作成されたときに、VeleroのBackup Scheduleを作成するもの。
LWKD
kubenews #7
2021-01-29
配信URL
各タイトルを押していただくことで、実際の記事に飛びます。
Kubernetes Cost Reporting using Kubecost
- kubernetesの上で動かし、現在の使用状況からどれくらいのコストがかかりそうか、どれくらいのコストカットができそうかなどをみることができる。
- 実際に見てもらいたいと思います。
Project Agumbe: Share Objects Across Namespaces in Kubernetes
- Global ResourceというCRD オブジェクトを使って、Namespaceに依存するリソースの複製を他のNamespaceにつくるもの
- コピー元をParent Object、コピーをChild Objectと呼ぶ。
【EKSWorkshop】EKSやkubernetes周辺を効率よく学ぶのにオススメなチュートリアル集
- EKSを学んでいくためのチュートリアル
- 一緒にやっていく人を大募集中なので、よければryにご連絡ください。
- やりたいもの
- Start the workshop
- Deploy the Example Microservices
- Autoscaling our Applications and Clusters
- Using Spot Instances with EKS
- Service Mesh With App Mesh
Kubenews #6
2021-01-22
配信URL
各タイトルを押していただくことで、実際の記事に飛びます。
GCPSketchnote
GCPの様々なリソースについて絵を使って、動作やユースケースなどの説明してくれている。
CNCF Security Whitepaper Shows the Complexity of Securing Cloud Native Operations
- Cloud Native Security Whitepaperというものがあるらしい。
- CNCFは、クラウドネイティブ開発は、develop、destribute、deploy、runtimeの4つの異なるライフサイクルフェーズにモデリングする必要があると述べている。
- Develop: アプリケーション作成段階
- Destribute: CICDの段階
- Deploy: Containerとして動かす段階
- 次のことを確認しよう。
- 署名されたアーティファクト(ソースコード、デザインファイル、テストのエビデンス、ログファイルなどなど)となっているか検証できているか。
- コンテナイメージはセキュリティポリシーに準拠しているか。
- ホストの適合性を検証したか。
- 監視は、次の3つに基づいて実施
- metrics
- trace
- log
- 次のことを確認しよう。
- Runtime: 基盤に関して
- 認可されたプロセスのみがコンテナ名前空間内で動作する
- 不正なリソースアクセスを防ぐ - 敵対的なツールアクティビティを検出するために、ネットワーク監視を行う
What’s Your Kubernetes Maturity?
- Kubernetes Maturity Modelというものをざっくりと解説した記事
- Phase1: Prepare
- Kubernetesが、ビジネス目標と技術目標の推進にどのように役立つか、コスト、および達成しようとしていることを検討
- Phase2: Transform
- 基礎的な知識や理解、マインドセットだったりエコシステムの変革を行う段階
- 既存の技術をCloud Nativeな文脈から見ること、技術的負債を払拭してKubernetes内に持ち込まないこと
- Phase3: Deploy
- 実際にKubernetes上でApplicationを本番運用し始める。
- CI / CDのセットアップ、開発者の権限付与、限定的な監視と可観測性の導入
- Phase4: Build Confidence
- 経験から自信をつける段階
- Phase5: Improve Operation
- Kubernetesクラスターのセキュリティ、効率、信頼性を向上させる段階
- Phase6: Measure & Control
- この段階では、何を測定および追跡し、どのようにKubernetesを制御するかを理解すべく、より多くのデータ、インサイト、ツールによる情報を収集して処理する。
- infrastructure as code and CI/CD driven processes
- Phase7: Optimize and Auutomate
- Phase1: Prepare
Kubenews #5
2021-01-15
配信URL
https://youtu.be/8Y_aHyveDUYyoutu.be
各タイトルを押していただくことで、実際の記事に飛びます。
Kubernetes Storage Performance Comparison
- GlusterFS, CEPH, Portworx, OpenEBS(cStor backend), OpenEBS MayaStor, Longhornの比較記事
- 比較はAKS上で実施
- 結果としては、Portworx と OpenEBS Mayastorがすごそう
KubernetesにおけるContainer Object Storage Interface (COSI)の概要
Kubenews #4
2020-12-18
配信URL
各タイトルを押していただくことで、実際の記事に飛びます。
Efficient Multi-Zone Networking with Topology Aware Routing
- kubeweekly(12/12)
- Google OSS Blog
- Service Topology
Topology Aware Routing of Services: topologyKeys
を用いてトラフィックを細かく分割する方法
- Kubernetes v1.17 alpha機能であり、影響範囲はPod-Pod間の通信
- TopologyKeyにおいて、Nodeのlabelを設定することで、上から書かれている順番に応じて、優先的に指定Labelを持つNode上で動くPodに通信が流れるように設定できる。
- 例えばマルチAZ構成において、クライアントと同一ノードまたは同一AZのようなネットワーク的に近いエンドポイントにトラフィックが優先的にルーティングされるように指定できる。
- 1Serviceに複数Endpointがひも付く構成になる。
以下のマニフェストでは、
1. kubernetes.io/hostname
より、同一Node
2. topology.kubernetes.io/zone
より、同一Zone
3. topology.kubernetes.io/region
より、同一region
4. *
より、その他全て
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 9376 topologyKeys: - "kubernetes.io/hostname" - "topology.kubernetes.io/zone" - "topology.kubernetes.io/region" - "*"
OPA The Easy Way
- kubeweekly(12/12)
- InflaCloud Blog
- How to Use a Policy Engine to Improve Your Security Posture
無料オンライントレーニングと[Styra DAS Free](https://www.styra.com/pricing)の宣伝。
[VScode OPA Plugin](https://marketplace.visualstudio.com/items?itemName=tsandall.opa)もあるらしい。
- Styra DAS Freeへのアクセス
- 自分のk8s clusterの登録
- 各種ルールの作成
- ルールのテスト
- etc
自分的に一番嬉しいのが、AddmissionReviewの取得ができるらしい!
Automating Volume Expansion Management
- kubeweekly(12/12)
- Redhut Openshift blog
- volume-expander-operator
Persistent Volumeを用いる際は、PrometheusにこのAlertを入れたほうがいい。
- alert: "Storage Saturation" labels: severity: critical annotations: summary: Storage usage over 75% persistentvolumeclaim: namespace: expr: kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes > 0.75 for: 1m ``` という前置きの元、PVの拡張を自動化するソリューションとして、volume-expander-operatorに関する紹介が始まる。 - 監視したいPVCのannotationに`volume-expander-operator.redhat-cop.io/autoexpand: “true”`を設定が必要。 - Once enabled, the volume-expander-operator will start polling the platform Prometheus instance that is part of OpenShift Monitoringとあり、OpenShiftでしかできなそう?? - `kubelet_volume_stats_used_bytes`と`kubelet_volume_stats_capacity_bytes`の2つのメトリックより判断。 - その他設定するannotaionは以下 - volume-expander-operator.redhat-c<200b><200b>op.io/expand-threshold-percent: ボリュームの拡張をトリガーする閾値 - volume-expander-operator.redhat-c<200b><200b>op.io/expand-by-percent: 拡張される既存ボリュームのサイズに基づくパーセンテージ - volume-expander-operator.redhat-c<200b><200b>op.io/expand-up-to: ボリュームの上限 - volume-expander-operator.redhat-c<200b><200b>op.io/polling-frequency: ポーリングする頻度 参考manifest
kind: PersistentVolumeClaim apiVersion: v1 metadata: annotations: volume-expander-operator.redhat-cop.io/autoexpand: 'true' volume-expander-operator.redhat-cop.io/expand-threshold-percent: "85" volume-expander-operator.redhat-cop.io/expand-by-percent: "20" volume-expander-operator.redhat-cop.io/polling-frequency: "1m" volume-expander-operator.redhat-cop.io/expand-up-to: "20Gi" name: to-be-expanded spec: accessModes: - ReadWriteOnce resources: requests: storage: "1Gi"
Kubenews #3
2020-12-11
配信URL
各タイトルを押していただくことで、実際の記事に飛びます。
With the release of GKE node version 1.19, the Container-Optimized OS with Docker (cos) variant is deprecated
Amazon EMR on Amazon Elastic Kubernetes Service (EKS)
- Amazon EMR: big data platform for processing vast amounts of data using open source tools such as Apache Spark, Apache Hive, Apache HBase, Apache Flink, Apache Hudi, and Presto.
- AWS News Blog
- さまざまなEC2インスタンスタイプでパフォーマンスを最適化して、価格とパフォーマンスの要件を満たしていたものを、EKS上で動かすことでリソースを共有したり、管理を統合できたりなどのメリットがある。
- 現在EC2で使用しているものと同じEMR機能をすべてEKSで利用できる。
Kubernetes CRDs = Huge Pain In Multi-Tenant Clusters
- DevSpace Technologies Inc. Blog
- 簡単にどんなことが書かれているか
Kubernetesにおけるマルチテナンシーとは、複数のユーザー、アプリケーション、またはワークロードがいわゆるテナントを形成し、 共有クラスター内で互いに共存しているシステムアーキテクチャです。 マルチテナントを管理する際、以下のことが重要である。 ・侵害されたテナントが残りのユーザーまたはワークロードに与える影響を最小限に抑えるために、テナント間に適切なレベルの分離を実装する必要がある。 ・各テナントがタスクを完了するために必要なものにアクセスできるよう、コンピューティング、ネットワーキング、 およびその他のリソースがクラスター内のすべてのテナント間で公平に共有されるようにする必要がある。 この2つを満たすために、テナントには独自のCRDおよびRBACルールを追加または管理することを許可されていないというケースが多い。 マルチテナントクラスターでCRDを使用する際の問題点 ・クラスター内の他のユーザーが使用している他のリソースと競合しないようにする ・マルチテナントクラスターにセキュリティの脆弱性をもたらす可能性がある (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11247) ・CRDが互換性のない方法で変更または変更された場合、クラスター全体で問題が発生する可能性がある。 ・マルチテナント設定でCRDを使用すると、管理上の責任と課題がさらに追加される。 解決策 ・回避できる場合はCRDを使用しない。 ・個別のクラスターまたは仮想クラスターを検討する。 (https://loft.sh/blog/introduction-into-virtual-clusters-in-kubernetes/)
Graceful shutdown in Kubernetes is not always trivial
- FLANT blog
- nginxとPHP-FPMにおける、Graceful Shutdownの違いについて簡単に説明している。
- 一例として以下のことが書かれていた。
- nginxでは、preStopに書くものは、
nginx -s quit
だけで良い。 - PHP-FPMでは、プロセスを止めるのにsignalsで
sigterm
ではなくsigquit
を送る必要があった。
- nginxでは、preStopに書くものは、
- 結論としては、
Kubenews #2
2020-12-04
配信URL
各タイトルを押していただくことで、実際の記事に飛びます。