Kubernetes の人気の高たりに぀いお

おい、ハブル

倏の終わりに、私たちはこのテヌマに匕き続き取り組んでいるこずをお知らせしたいず思いたす。 Kubernetes そしお、このプロゞェクトの珟状を瀺す蚘事を Stackoverflow から XNUMX 月初めに公開するこずにしたした。

Kubernetes の人気の高たりに぀いお

読曞をお楜しみください

この蚘事の執筆時点では、Kubernetes の幎霢は玄 XNUMX 幎です。 XNUMX歳、過去 XNUMX 幎間でその人気は非垞に高たり、垞に次のランキングにランクむンしおいたす。 䞀番奜きな プラットフォヌム。 今幎は Kubernetes が XNUMX 䜍にランクされたした。 芁玄するず、Kubernetes は、コンテナ化されたワヌクロヌドを実行および調敎するために蚭蚈されたプラットフォヌムです。

コンテナヌは、Linux でプロセスを分離するための特別な蚭蚈ずしお始たりたした。 コンテナは2007幎から含たれおいたす cgroup、2002 幎以降は名前空間。 コンテナは 2008 幎に利甚可胜になるたでにさらに優れた蚭蚈になりたした LXCそしおGoogleは、ず呌ばれる独自の瀟内メカニズムを開発したした。 ボルグ、「すべおの䜜業はコンテナ内で行われたす」。 ここから、Docker の最初のリリヌスが行われ、コンテナヌが぀いに䞀般的な倧芏暡゜リュヌションになった 2013 幎に早送りしたす。 圓時、コンテナ オヌケストレヌションの䞻なツヌルは メゟス、しかし、圌は倧人気ではありたせんでした。 Kubernetes は 2015 幎に初めおリリヌスされ、その埌、このツヌルはコンテナ オヌケストレヌションの分野における事実䞊の暙準になりたした。

Kubernetes がなぜこれほど人気が​​あるのか​​を理解するために、いく぀かの質問に答えおみたしょう。 最埌に開発者がアプリケヌションを運甚環境にデプロむする方法に぀いお合意できたのはい぀ですか? すぐに提䟛されるツヌルをそのたた䜿甚しおいる開発者を䜕人知っおいたすか? 珟圚、アプリケヌションがどのように機胜するかを理解しおいないクラりド管理者が䜕人いるでしょうか? この蚘事では、これらの質問に察する答えを芋おいきたす。

YAML ずしおのむンフラストラクチャ

Puppet ず Chef から Kubernetes に移行した䞖界における最倧の倉化の XNUMX ぀は、「コヌドずしおのむンフラストラクチャ」から「デヌタずしおのむンフラストラクチャ」、特に YAML ぞの移行でした。 ポッド、構成、デプロむされたむンスタンス、ボリュヌムなどを含む Kubernetes のすべおのリ゜ヌスは、YAML ファむルで簡単に蚘述するこずができたす。 䟋えば

apiVersion: v1
kind: Pod
metadata:
  name: site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80

このビュヌにより、DevOps たたは SRE プロフェッショナルは、Python や Javascript などの蚀語でコヌドを蚘述するこずなく、ワヌクロヌドを完党に衚珟するこずが容易になりたす。

むンフラストラクチャをデヌタずしお敎理するこずには、他にも次のような利点がありたす。

  • GitOps たたは Git オペレヌションのバヌゞョン管理。 このアプロヌチにより、すべおの Kubernetes YAML ファむルを git リポゞトリに保存できるため、倉曎がい぀行われたか、誰が倉曎したか、正確に䜕が倉曎されたかを正確に远跡できたす。 これにより、組織党䜓の業務の透明性が高たり、特に埓業員が必芁なリ゜ヌスをどこで探すべきかに぀いおのあいたいさがなくなり、業務効率が向䞊したす。 同時に、プル リク゚ストをマヌゞするだけで、Kubernetes リ゜ヌスに自動的に倉曎を加えるこずが簡単になりたす。
  • スケヌラビリティ。 リ゜ヌスが YAML ずしお定矩されるず、クラスタヌ オペレヌタヌが Kubernetes リ゜ヌス内の 10 ぀たたは 20 ぀の数倀を倉曎するこずが非垞に簡単になり、それによっおリ゜ヌスのスケヌリング方法が倉曎されたす。 Kubernetes は、ポッドの氎平自動スケヌリングのメカニズムを提䟛したす。これを䜿甚するず、䜎レベルず高レベルのトラフィックを凊理するために、特定のデプロむメント構成で必芁なポッドの最小数ず最倧数を簡単に決定できたす。 たずえば、トラフィックの突然の急増により远加の容量が必芁な構成をデプロむした堎合、maxReplicas を XNUMX から XNUMX に倉曎できたす。

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-deployment
  minReplicas: 1
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

  • セキュリティず管理。 YAML は、Kubernetes にものがどのようにデプロむされるかを評䟡するのに最適です。 たずえば、セキュリティ䞊の倧きな懞念事項は、ワヌクロヌドが管理者以倖のナヌザヌずしお実行されおいるかどうかに関係したす。 この堎合、次のようなツヌルが必芁になる堎合がありたす。 コンテスト、YAML/JSON バリデヌタ、プラス ポリシヌ゚ヌゞェントを開く、コンテキストを確認するためのポリシヌ怜蚌ツヌル セキュリティコンテキスト ワヌクロヌドにより、コンテナヌを管理者暩限で実行するこずができたせん。 これが必芁な堎合、ナヌザヌは簡単なポリシヌを適甚できたす。 REGOこのように

package main

deny[msg] {
  input.kind = "Deployment"
  not input.spec.template.spec.securityContext.runAsNonRoot = true
  msg = "Containers must not run as root"
}

  • クラりドプロバむダヌずの統合オプション。 今日のハむテクにおける最も泚目すべきトレンドの XNUMX ぀は、パブリック クラりド プロバむダヌでワヌクロヌドを実行するこずです。 コンポヌネントの䜿甚 クラりドプロバむダヌ Kubernetes を䜿甚するず、任意のクラスタヌをそれが実行されるクラりド プロバむダヌず統合できたす。 たずえば、ナヌザヌが AWS 䞊の Kubernetes でアプリケヌションを実行し、そのアプリケヌションをサヌビスを通じお公開したい堎合、クラりド プロバむダヌがサヌビスの自動䜜成を支揎したす。 LoadBalancerロヌドバランサヌを自動的に提䟛したす Amazon Elastic Load Balancerトラフィックをアプリケヌション ポッドにリダむレクトしたす。

拡匵性

Kubernetes は拡匵性が非垞に高いため、開発者はそれを気に入っおいたす。 ポッド、デプロむメント、 StatefulSets、秘密、 ConfigMaps、など。 確かに、ナヌザヌず開発者はフォヌムに他のリ゜ヌスを远加できたす。 カスタムリ゜ヌス定矩.

たずえば、リ゜ヌスを定矩したい堎合、 CronTab、その埌、次のようなこずができたす。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.my.org
spec:
  group: my.org
  versions:
    - name: v1
      served: true
      storage: true
      Schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                  pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
                replicas:
                  type: integer
                  minimum: 1
                  maximum: 10
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct

埌で、次のような CronTab リ゜ヌスを䜜成できたす。

apiVersion: "my.org/v1"
kind: CronTab
metadata:
  name: my-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-cron-image
  replicas: 5

Kubernetes の拡匵性に関するもう XNUMX ぀のオプションは、開発者が独自のステヌトメントを䜜成できるこずです。 オペレヌタ は、「」に埓っお動䜜する Kubernetes クラスタヌ内の特別なプロセスです。制埡回路」 ナヌザヌはオペレヌタヌの助けを借りお、Kubernetes API ず情報を亀換するこずで CRD (カスタム リ゜ヌス定矩) の管理を自動化できたす。

コミュニティには、開発者が独自のオペレヌタヌを簡単に䜜成できるツヌルがいく぀かありたす。 その䞭で - オペレヌタヌフレヌムワヌク ず オペレヌタヌSDK。 この SDK は、開発者がオペレヌタヌの䜜成をすぐに開始できる基盀を提䟛したす。 次のようにコマンドラむンから開始できるずしたす。

$ operator-sdk new my-operator --repo github.com/myuser/my-operator

これにより、YAML ファむルや Golang コヌドを含む、オペレヌタヌのすべおの定型コヌドが䜜成されたす。

.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go

次に、次のように必芁な API ずコントロヌラヌを远加できたす。

$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService

$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService

次に、最埌にオペレヌタヌをアセンブルしお、コンテナヌのレゞストリに送信したす。

$ operator-sdk build your.container.registry/youruser/myapp-operator

開発者がさらに现かく制埡したい堎合は、Go ファむル内の定型コヌドを倉曎できたす。 たずえば、コントロヌラヌの詳现を倉曎するには、ファむルに倉曎を加えるこずができたす。 controller.go.

別のプロゞェクト KUDOを䜿甚するず、宣蚀的な YAML ファむルのみを䜿甚しおステヌトメントを䜜成できたす。 たずえば、Apache Kafka の挔算子は次のように定矩されたす。 そう。 これを䜿甚するず、いく぀かのコマンドを実行するだけで、Kubernetes 䞊に Kafka クラスタヌをむンストヌルできたす。

$ kubectl kudo install zookeeper
$ kubectl kudo install kafka

次に、別のコマンドで蚭定したす。

$ kubectl kudo install kafka --instance=my-kafka-name 
            -p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181 
            -p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m 
            -p BROKER_COUNT=5 -p BROKER_MEM=4096m 
            -p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3 
            -p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20

むノベヌション

過去数幎間、Kubernetes のメゞャヌ リリヌスは数か月ごずにリリヌスされおおり、぀たり、XNUMX 幎に XNUMX  XNUMX ぀のメゞャヌ リリヌスがリリヌスされおいたす。 それぞれに導入される新機胜の数は枛りたせん。 さらに、この困難な時期でも枛速の兆しはありたせん。珟圚の状況を芋おください。 Github での Kubernetes プロゞェクトのアクティビティ.

新機胜により、さたざたなワヌクロヌドにわたっお操䜜をより柔軟にクラスタリングできるようになりたす。 さらに、プログラマは、アプリケヌションを実皌働環境に盎接デプロむする際に、より優れた制埡を享受できたす。

コミュニティ

Kubernetes の人気のもう 2015 ぀の倧きな偎面は、コミュニティの匷さです。 1.0 幎にバヌゞョン XNUMX に到達するず、Kubernetes は次のスポンサヌになりたした。 クラりドネむティブコンピュヌティング基盀.

さたざたなコミュニティもありたす SIG (Special Interest Group) は、プロゞェクトの進化に合わせお Kubernetes のさたざたな領域に取り組むこずに焊点を圓おたした。 これらのグルヌプは垞に新しい機胜を远加し、Kubernetes の操䜜をより䟿利にしおいたす。

Cloud Native Foundation は、この蚘事の執筆時点では䞖界最倧のオヌプン゜ヌス カンファレンスである CloudNativeCon/KubeCon も䞻催しおいたす。 通垞は幎に XNUMX 回開催され、Kubernetes ずその゚コシステムを改善し、XNUMX か月ごずに登堎する新機胜を孊びたいず考えおいる䜕千人もの専門家が集たりたす。

さらに、クラりドネむティブ財団は、 技術監理委員䌚、SIG ず協力しお新芏および既存のレビュヌを行いたす。 プロゞェクト クラりド゚コシステムに焊点を圓おたファンド。 これらのプロゞェクトのほずんどは、Kubernetes の匷みを向䞊させるのに圹立ちたす。

最埌に、人々が団結しながら同時に新芏参入者を歓迎するコミュニティ党䜓の意識的な努力がなければ、Kubernetes はこれほど成功しなかったず私は信じおいたす。

未来

開発者が将来察凊しなければならない䞻な課題の XNUMX ぀は、コヌドが実行されるむンフラストラクチャではなく、コヌド自䜓の詳现に焊点を圓おられるかどうかです。 こういったトレンドにも察応しおいたす サヌバヌレスアヌキテクチャパラダむム、今日の䞻芁なもののXNUMX぀です。 高床なフレヌムワヌクはすでに存圚したす。 ネむティブ О OpenFaas、Kubernetes を䜿甚しお開発者からむンフラストラクチャを抜象化したす。

この蚘事では、Kubernetes の珟状の衚面をなぞっただけです。実際、それは氷山の䞀角にすぎたせん。 Kubernetes ナヌザヌは、他にも倚くのリ゜ヌス、機胜、構成を自由に利甚できたす。

出所 habr.com

コメントを远加したす