我试着学习一下Kubernetes的教程
你好,我是白白小枝。
因为没有接触过 Kubernetes,所以我打算做一下 Kubernetes 的官方教程,深入理解 Kubernetes。
本次教程的URL如下所示。
操作系统为Windows10 Home。
Kubernetes是什么
因为我对Kubernetes并不熟悉,所以我首先进行了一番调查。
Kubernetes是一个用于弹性执行分布式系统的框架。这里的弹性是指能够缩小可用资源的能力。比如,在运营多个提供视频传输功能的应用容器时,可以增加容器数量以满足高峰期的用户观看需求,而在低峰期可以减少容器数量并保持单个容器的利用率较高,以节约资源。
它可以帮助我们处理应用程序的扩展和故障转移,还提供了一些部署方法,包括金丝雀部署。
Kubernetes的大致功能如下:
-
- サービスディスカバリーと負荷分散
-
- DNS名または独自のIPアドレスを使ってコンテナを公開することができます。
-
- 特定のコンテナのトラフィックが高い場合、デプロイされたアプリケーションを安定化させるために、トラフィックを分散させて負荷を減らします。
-
- ストレージ オーケストレーション
-
- ユーザーが選択したローカルやパブリッククラウドプロバイダーなどのストレージシステムに自動でマウントすることができます。
-
- 自動化されたロールアウトとロールバック
-
- コンテナをKubernetesを使ってデプロイするコンテナの状態を情報を保存することができ、コンテナの実際の状態を保存した状態に戻すことができます。例えば、新しいコンテナの作成や既存コンテナの削除、新しいコンテナにリソースを適応する処理などのアプリケーションのデプロイのための処理を自動化できます。
-
- 自動ビンパッキング
-
- Kubernetesは、コンテナ化されたタスクを実行することができるノードを持ったクラスターを提供することができます。
-
- Kubernetesに、それぞれのコンテナがどの程度のCPUとメモリを使用するかを宣言できます。Kubernetesは、コンテナをノードにあわせて調整することができ、リソースを最大限に活用してくれます。
-
- 自己修復
-
- Kubernetesは、処理が失敗したコンテナを再起動したり、コンテナを入れ替えたり、定義したヘルスチェックに応答しないコンテナを強制終了しますが、これらの処理が完了するまでクライアントには伝えません。
-
- 機密情報と構成管理
-
- Kubernetesは、パスワードやOAuthトークン、SSHキーのような機密の情報を保持、管理することができます。
-
- 機密情報やアプリケーションの構成をコンテナイメージの再作成せずにデプロイや更新をすることができます。この時、機密情報が露出することは、ありません。
- 以下を参考にしました。
教程
现在,我想开始进行Kubernetes的教程。
启动Minikube
首先,我们将创建一个运行minikube的环境。请按照以下参考进行操作。
minikube是一个在本地环境中运行Kubernetes的工具,它侧重于简化Kubernetes的部署方法与理解。使用minikube需要先安装Docker或虚拟机环境。而Kubernetes可以通过以下单个命令来运行。
minikube start
安装 minikube
这次我们将使用Chocolatey。只需执行以下命令即可安装。
choco install minikube
この時、以下のように実行時のスクリプトを出すかどうかを確認する文言が出てくるので好きなものを選択してください。
Do you want to run the script?([Y]es/[A]ll - yes to all/[N]o/[P]rint):
执行Cluster
本次,将使用Docker启动集群。
执行以下命令。
在管理员权限的PowerShell中执行命令即可使其在Docker中运行。
minikube start --driver=docker
如果要删除,请执行以下命令。
minikube delete
实际运行时所参考的网站。
操作集群
执行以下命令,将显示所有命名空间中的所有Pod的列表。
kubectl get po -A
据报道,正式的规定是这样记载的。
kubectl get pods --all-namespaces
Pod是Kubernetes应用程序的基本执行单元。
它是在创建或部署Kubernetes对象模型时最小且最简单的单位。Pod代表着在集群中运行的进程。
Pod的细节如下。
此外,通过在Shell的设置中添加以下内容,可以使其更加易于使用。
alias kubectl="minikube kubectl --"
最初的时候,某些服务例如存储供应商可能还没有处于运行状态。这是集群启动时的正常情况,并且会很快解决。为了进一步了解集群的状态,minikube集成了Kubernetes Dashboard,并且执行以下命令可以启动仪表盘。
minikube dashboard
应用程序的部署
让我们部署示例应用程序,以便可以通过80端口进行访问。
请执行以下两个命令。
kubectl create deployment hello-minikube --image=docker.io/nginx:1.23
kubectl expose deployment hello-minikube --type=NodePort --port=80
その後、以下のコマンドを実行すると、デプロイの状況を見ることができます。
kubectl get services hello-minikube
使用浏览器是访问此服务的简单方法。
执行以下命令将启动minikube并通过浏览器访问。
minikube service hello-minikube
运行后,将显示如下信息:”http://127.0.0.1:53428″已打开,在该地址下将展示nginx的欢迎页面。
您可以使用以下命令将端口转发到您喜欢的端口号。在这个例子中,我们将其更改为7080号。
kubectl port-forward service/hello-minikube 7080:80
接着我确认可以顺利在 http://localhost:7080/ 打开。
负载均衡器部署
要访问已部署应用程序的负载均衡器,请使用“minikube tunnel”命令。
以下是部署示例。
kubectl create deployment balanced --image=docker.io/nginx:1.23
kubectl expose deployment balanced --type=LoadBalancer --port=80
別のタブを開いた後に以下のコマンドを実行し、minikubeのトンネルを開始し、「バランス型」配置のルーティング可能な IP を作成します。
ルーティング可能なIPを見つけるために以下のコマンドを実行します。
kubectl get services balanced
集群的管理
在这里,我们将介绍一些方便管理集群的命令。
您可以使用以下命令,在不影响已部署应用程序的情况下暂停Kubernetes。
minikube pause
minikube unpause
如果要停止集群,请使用以下命令。
minikube stop
在这个时候,我确认了从“电源已关闭”到“已停止”之间需要一些时间。
你可以使用以下命令来更改minikube的默认内存大小。
minikube config set memory 9001
如果要反映更改,请执行以下命令。
minikube delete
minikube start
您可以在Redmaru的路径上确认在创建集群时内存增加了。
以下是一个可以查看适用于Kubernetes轻松安装的插件清单的命令。
minikube addons list
如果要运行旧版本的Kubernetes,请使用以下命令。此时,将创建一个新的集群,而不是现有的Kubernetes集群。
minikube start -p aged --kubernetes-version=v1.16.1
您可以使用以下命令删除所有集群。
minikube delete --all
これで、最初に作成したminikubeも追加で作成した古いminikubeも削除されました。これでチュートリアルは終わりです。
印象
回顾这次的经验,我发现创建本身是可以通过命令轻松完成的。虽然我对于不是minikube的应用程序操作还不太了解,以及对Pod的理解还很有限,但这让我更加渴望未来继续学习。
# 参考資料一覧
今回やったチュートリアル
关于Kubernetes的资料
Windows HomeにKubernetesを入れるときに参考にしたサイト
Pod的概述