【入门】学习Kubernetes备忘录①:从Docker学起
はじめに:くーべねてぃす?
なんとなく今まで聞いたことあったけど触れたくなかった、、、Dockerでよくないか?
とかとか、思っていた今日この頃。
しかし、モダンな技術だし(モダン?)
クラウド上でシステム構築するときになんか良いらしいし、最近使うことになったので勉強していきます。
(必要を迫られないと勉強しない、エンジニアの風上にも置けない人間)
ということで、Kubernetesの理解のために何を勉強したのかメモ代わりに残しておきます。
今回は以下の内容を取り扱います。
・Dockerの基礎
・Kubernetesの基礎
・Kubernetesの利点
・Kubernetesの用語と仕組み
・両者の関係性
由于我也是初学者,如果有任何错误之处,请您留下评论,我将不胜感激。
这篇文章的目标
-
- KubernetesどころかDockerも怪しいよの人
- Kubernetesは聞いたことはあるけれど…の人
以上の、駆け出しエンジニア用です。
一緒に勉強していければ幸いです。
Dockerの基礎
阅读关于Kubernetes的入门文章时,经常会看到“通过容器…”或者“Docker…”,所以首先从 Docker 开始。
由于前辈们的入门文章非常出色,请务必参考这篇文章。
【docker入門】
【Docker入門综合版】
只要你完全不了解Docker,从来没有用过的话,尝试动手实践可能需要花上1到2个小时。
如果单靠阅读、观看能够掌握,那么全世界的人都能成为大谷翔平!!!
个人备忘录
-
- 「いちいち各PC上で開発環境整えるの面倒だから仮想環境上で動くもの作ろうよ」ができるよ。
-
- 仮想環境の作り方はいろいろあるけど、OS上に直接作るんじゃなくてDocker Engine用意してその上に作ろうよ(コンテナ仮想化)。
-
- 「コンテナ」が実行環境。「イメージ」が実行環境(コンテナ)のひな型。「イメージ」から「コンテナ」ができるよ。
- 「Dockerfile」はイメージ作成の指示書。「Dockerfile」から「イメージ」が作れるよ。
Kubernetesの基礎
现在,是时候开始学习Kubernetes了。
Kubernetes是什么?
↑は公式ドキュメントですが、よく読めばなんとなくわかるのですが元が英語なので直訳的かつ、専門用語が多数、、、
でもなんとなく、 「コンテナ(実行環境)をいい感じに管理してくれるプラットフォームなんだな~」 ということがわかります。
Kubernetes的优势
まずは、なぜKubernetesを使うのかです。
上でも書きましたが、結局のところは「いい感じにコンテナ管理してくれる」に尽きると思います。
今までは、コンテナのデプロイやスケーリングなどの管理を手動や半自動でやっていましたがこれを 自動 でやってくれます。
この特徴が コンテナオーケストレーションと呼ばれ、 「コンテナ化されたアプリを自動的にデプロイ、スケーリングおよび管理してくれる」 とのこと。
もう少し詳細を見てみると、以下の特徴がよく挙げられています。
- ・コンテナの自己復旧
- 処理失敗状態のコンテナを自動的に再起動したり、入れ替えたりしてくれる。
- ・自動スケーリング
- コンテナ数を自動的にスケールアップorダウンしてくれる。
- ・リソースの最適活用
- コンテナの必要とするCPUやメモリを宣言するとリソースを最大限に活用してくれる。
- ・ストレージの管理
- ローカルやクラウドのストレージを選ぶと自動でマウントしてくれる。
- ・ネットワークトラフィックの管理
- コンテナへのトラフィックが多い時に、負荷分散してくれる。
- ・ロールアウト・ロールバックの管理
- アプリケーションのバージョンに合わせ、自動的にコンテナの作成・削除、それらへのリソースの適用をしてくれる。
- ・セキュリティ情報や構成情報の管理
- パスワードやトークン、キーなどを保持可能。(著者はよく理解できてない)
ひとまず、こんな感じがKubernetesを使うメリットでしょうか。
正直、使ってみないと分からないし、大規模なサービスにならないとあまり実感できないのでは?という気もしています。
ところで、コンテナオーケストレーション的なソフトウェアは他にもあるのですが、なぜKubernetesなのかという点については、やはりAWSやGCP、Azureがサポートしていることが大きいのではないでしょうか。
Kubernetes的术语和机制
大致了解了一些好处后,首先我整理了至少要了解的术语。
- ・Kubernetesクラスタ
- マスターとノードを含むマシン群。
- ・Kubernetesマスター(コントロール・プレーン)
- Kubernetesノードを制御するマシン。Kubernetes APIサーバ、etcd、Kubernetesスケジューラ、Kubernetesコントローラ、クラウド・コントローラ・マネージャが含まれる。
- ・Kubernetesノード
- マスターに制御されるマシン。割り当てられたタスクを実行。Kubelet、Kubernetesネットワーク、Docker、コンテナなどが含まれる。
- ・Pod
- 各ノードにデプロイされた、一つ以上のコンテナからなるグループ。ストレージやネットワークなどをファイルで設定できるらしい。
- ・Service
- Podと外部の通信を取り持つための仕組み。アクセスをPodに自動的に分配してくれる。
- ・マニフェストファイル
- マスターで処理されるシステム全体の仕様書。yamlで書かれ、これにどんなコンテナをデプロイするかとかが書かれてる?(まだ詳細を理解してない)
- ・kubelet
- 各ノードで実行されるエージェント。Podの起動や管理を担当。
- ・kubectl
- KubernetesのCLI的なもの。これでマニフェストファイルをマスターに処理させたりいろいろするらしい。
在对这些术语有了大致的理解之后,我们来谈谈它的机制,您可以阅读以下的文章试试看。
【什么是Kubernetes】(关于组件)
【适合经历挫折的工程师学习】详细理解Kubernetes机制(入门/基础版)】(推荐因其极易理解)
と、こんな感じですがKubernetes全体のイメージは掴めたでしょうか?
ちなみに、著者は6割ぐらいの理解で、以下のような感想です。
「じゃあ実際にKubernetesはどう使えばいいんだ~~!!」
「そもそもKubernetes使う場面がわからん~~!!」
実際の使い方や使用場面については第2回以降で取り扱いたいと思います。
Kubernetes和Docker之间的关系
最終是关于Kubernetes和Docker之间的关系。
作者以前认为这两者是相等的关系,选择其中一个就无法选择另一个。
然而,Kubernetes是一个用于管理容器的平台,而Docker是一种能够创建和运行容器的技术(软件)。
也就是说,希望同时利用这两者,Kubernetes负责整体管理,Docker在各个节点上实际运行容器。
经常说Kubernetes是容器的操作系统,现在也理解了其含义。
ところで、Dockerを少しかじったことがある方は、「DockerComposeがあるからKubernetesいらなくない?」と思うでしょう。
たしかに、シンプルで拡張する予定のないアプリケーションならばDockerComposeでよいかもしれません。
しかし、複数のサーバで複数のコンテナを実行している場合、それらの管理や監視は非常に面倒です。
这里有一篇很容易理解的文章:【数小时内完全掌握!相当实用的Kubernetes实践!】(从Kubernetes的优势开始)。
在现代的容器化服务开发中,Kubernetes作为一项综合管理容器的重要技术非常关键!!(结束语)
结束
对于Kubernetes,你大概理解了吗?
我认为有很多有参考价值的文章,但是它们在术语的统一性和关注重点上存在很多分歧,很难找到所需的信息。
此外,我也感到这是一项需要亲手实践才能理解的技术。
因为它涉及了很多抽象的表述,以及对抽象概念的使用。
希望下一次能够做一个简单的实践操作。
我参考了一些文章等。
以下是在中国引进的材料:
【Docker入门】
https://qiita.com/HyunwookPark/items/43164de18a256182bf85
【Docker超入门合并版】
【什么是Kubernetes?】
https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/
【什么是Kubernetes(Oracle)】(组件的相关)
https://www.oracle.com/jp/cloud-native/container-engine-kubernetes/what-is-kubernetes/
【理解Kubernetes的机制(入门/基本篇)[针对流产的工程师]】
在这些资料中我参考的是:
– 【【Docker图解】理解Docker的整体概念 – 前篇 -】(包含后篇)
– 【适合Kubernetes初学者的入门实践】
– 【Kubernetes是什么(来自VMware)】
– 【Kubernetes是什么(来自Red Hat)】
– 【用图解方式简明易懂地解释Kubernetes是什么!包括Pod和Namespace】
– 【Kubernetes的架构】