【Kubernetes】简要了解k8s相关工具【备忘录】

首先

我根据参加了的「JAWS DAYS 2019」上的Kubernetes会议中听到的内容,简要总结如下。

我从Yusuke Kuoka先生的”Kubernetes on AWS/EKS最佳实践”演讲中挑选出了一些常用工具。演讲的资料请见下方链接:

===追記(2019年4月22日)=====
* 因为在业务中提到了基于多云的Kubernetes的ML / DL流水线,所以我简单地查了一下。
– ksonnet
– kubeflow

请用中文将以下内容进行改述:只需要提供一种选项:

Can you please rephrase the following sentences?

隨便紀錄一些備註。

Kubernetes相关工具

eksctl的中文释义可以是:eksctl

    • Go言語製

 

    • 裏でCloudFormationが動いている

 

    • 1コマンドでEKSクラスタ構築可能

 

    • 実行環境(VPC,Subnet,SG,IAM,ロール)とノードグループの作成,スケール,削除が可能

 

    • Weaveworksが開発しているOSS

 

    • k8sのAPIをたたくために必要な認証情報はaws-iam-authenticatorが行う

 

    • https://eksctl.io/

 

    • コマンド例

下記コマンドをたただけでクラスタ構築が可能

$ eksctl create cluster \
       --cluster-name my-eks-cluster \
       --nodes 3 \
       --nodes-min 3 \
       --nodes-max 5 \
       --node-type t2.medium \
       --region us-west-2
    • min,maxを指定することでクラスタのAutoScale時の台数を制御

 

    → autoscalingに関するconfigをあらかじめ設定行く必要がある

Minikube 小型集群

    • 手軽に開発・検証のKubernetes環境構築が可能

 

    • シングルノードのKubernetesクラスタを実行

 

    • minikubeコマンドでのインストールでは様々なアドオン機能が利用できる

 

    • → DNS, ダッシュボード, Dockerレジストリ etc

 

    • https://github.com/kubernetes/minikube

 

    • コマンド例

下記コマンドでKubernetsの仮想環境が起動する

$ minikube start

`kubens, kubectx` – `kubens, kubectx`

    • kubensはネームスペースの切り替えが容易になる

 

    コマンド例

可以使用下面的命令切换命名空间。

$ kubens kube-system
Context "test" set.
Active namespace is "kube-system".

$ kubens -
Context "test" set.
Active namespace is "default".
    • kubectxはコンテキストの切り替えが容易になる

 

    • コマンド例

下記コマンドでcontext切り替えが可能

$ kubectx minikube
Switched to context "minikube".

$ kubectx -
Switched to context "oregon".
    https://github.com/ahmetb/kubectx

舵筒

    • 正式名称:Kubernetes Helm

 

    • Kubernetesのパッケージマネージャー

 

    • → yum, aptに相当するパッケージマネージャー

 

    • 公式レポジトリが用意されておりStable,Incubatorが存在する

 

    • → jenkins, mysql, redmine, grafana, etcd などが用意されている

 

    • パッケージはchart,デプロイ用サーバーコンポーネント(podとしてデプロイされる)をtillerと呼ぶ

 

    • HelemClassic(旧Helm)とKubernetesチームが開発deployment-managerの2つが統合されている

 

    https://helm.sh/docs/helm/

土壤整治

    • インフラストラクチャ定義ツール

 

    • → クラウド上のリソースを定義ファイルの状態になるように生成・操作するツール

 

    • HashiCorp社が開発している

 

    • 複数のクラウドベンダ(AWS,GCP,Azure,DigitalOceanなど)に対応している

 

    • 複数のSaaS(DNSimple,Mailgun,Rundeck)にはば広く対応

 

    • ConfigurationFile(拡張子.tf)で状態定義を制御

 

    https://www.terraform.io/

AWS身份验证器

    • AWSの認証情報を利用したKubernetesクラスタへの認証行う為のツール

 

    https://github.com/kubernetes-sigs/aws-iam-authenticator

kube2iam,kiam

    • IAMと連携したアクセス制御を行う仕組みを提供

Pod単位でIAMアクセスポリシーを割り当てる
→ KubernetesとIAMの中継をしてアクセス権限の管理が行える
kube2iamは2016年に登場, kiamは2017年に登場
kiamは「Node自体がIAMロールを持たない」というようなよりセキュアな設計になっている
セットアップの手軽さはkube2iam
https://github.com/jtblin/kube2iam
https://github.com/uswitch/kiam

Kubeflow可以引用为以下中文译名:乌云求东风。

    • Kubernetes上に機械学習基盤を構築するOSSプロジェクト

 

    • 2018/12にv1.0 リリース

 

    • Kubernetes + ML = Kubeflow @KubeCon2017

下記3項目の環境を構築

JupyterHub(Jupyterを複数ユーザーで使えるようにしたもの)
TensorFlow Training Controller(学習用の分散環境が簡単に構築できる)
TensorFlow Serving(構築したモデルを公開できる)

マルチクラウドでML/DLの分散学習基盤を構築でき、APIとしてのServingも一括で行える
https://github.com/kubeflow/kubeflow

ksonnet(一个选项即可)

    • Kubernetesのminifestの記述,共有,デプロイをサポートするフレームワーク

 

    • Helmと競合する立ち位置

 

    • Kubernetesの設定ファイルの記述にjsonnet(Googleで開発されたJSONを定義するためのDSL)を採用

 

    • prototype:jsonnetによるtemplate

 

    • parameters:prototypeに具体的な値を与えてcomponentを生成

 

    enviroment:どの環境,どのクラスタに設定ファイルを適用するか指定する

最後

我打算根据资料逐渐添加一些补充内容。