通过使用Kubernetes的解决方案来满足基础设施所需的功能
首先
你好!我是株式会社80&Company的技术宣传员。我们的开发部门每个星期二早上9:30举行内部学习会。
本文介紹一位進行SRE業務的工程師在內部研討會上就Kubernetes進行的演講。簡單來說,SRE是Google公司提倡和實踐的概念,指的是「網站可靠性工程師(Site Reliability Engineer)」的縮寫。通過提高服務和產品的可靠性,使工程師能夠參與開發和運營兩方面的工作,實現自動化和效率化,並解決企業面臨的問題。
如果您对SRE工程师发布的Kubernetes感兴趣的话,请参考一下♪
读者对象
Kubernetesに興味がある方
Kubernetesの導入を検討している方
コンテナに対する前提知識のある方
选择主题的原因
发言者对于在Kubernetes上发表的原因是因为他/她对以下两个方面的好处感到吸引。
-
- 自動化する範囲を大きくすることができる
アプリケーションのトラフィックに応じて、自動的にコンテナインスタンスを増やすことができる
アプリケーションのデプロイ、アップデート、およびロールバックを自動化し、アプリケーションが停止しないようにすることができる
アプリケーションの依存関係を自動的に解決し、必要なコンテナを自動的に配備する
アプリケーションが異常終了した場合に自動的に新しいインスタンスを起動し、異常を修正する
ステートフルアプリケーションのデータ永続性、移行、および復元を自動化する
kubernetesをベースとしたサービスで可能となる機能が多数ある(CNCFを参照)
水平スケール可能なMySQL(Vitess)の実装ができる
ゼロスケール、パブリッククラウドなしでサーバーレス、イベントドリブンアーキテクチャの実装ができる
最初要先了解基礎建設的功能是什麼?
在基础设施中,需要的功能主要包括可用性、可维护性和可恢复性这三个方面。
在Kubernetes中,通过引入基础架构可以实现所需的可用性功能。基础架构的可用性是指即使发生故障,也能够减少对服务本身的影响的能力。
Kubernetes是什么
关于Kubernetes,官方文档中写着以下内容。
Kubernetes是一個可攜且具擴展性的開源平臺,能夠促進聲明式的配置管理和自動化,管理容器化的工作負載和服務。Kubernetes擁有龐大且快速發展的生態系統,提供各種服務、支援和工具,可在廣泛的範圍內使用。
更易理解的比喻是,将设置文件加载到控制平面,然后服务会自动完成大部分必要的工作。
关于基础设施所面临的可用性问题及解决方案。
以下是关于对基础设施所需的可用性问题和通过引入Kubernetes来解决的四个方案:
问题1: 需要关注负载均衡器、容器布置等的必要性
应对方案:通过同时运行多个资源,即使资源损坏,服务也不会停止。
问题2:需要判断图像更新的成功与失败并进行必要的图像更新。
解决方案:在确认新容器正常运行后,再删除旧容器。
第三个问题:当指定损坏的图像时,会造成服务停止的时间。
解决方案:在资源破损时立即获取新资源(以缩短停机时间)。
问题4:当左容器只有一个并且负载增加时,响应时间会变长。
解决方案:根据负载增加资源
引入Kubernetes的缺点。
关于引入Kubernetes的缺点,以下列出了以下4点。
-
- 学習コストがかかりやすいこと
-
- 利用料金がかかりやすいこと
AWSだと月に70ドルの費用がかかるが、マネージドでないKubernetesの運用は非現実的である
更新対応が多いこと
定期的にKubernetesのバージョンがリリースされるため、使用環境のバージョンアップを行う必要がある
物理サーバーの数が増えること
Kubernetesでは全てのノードに指示を出すための「マスター」が必要であるが、マスターと各ノードは別々の物理サーバーを用いるため、ノードの数に比例して物理サーバーの数も増えていく
补充一下:无法提及的Kubernetes常用实用功能。
-
- EC2(マシン)単位での自動回復
-
- EC2(マシン)単位での自動スケール
- シークレットの保存、設定ファイルでの読み込み
最终
本次讨论了在我们公司内部学习会上提出的基础设施所需的功能和使用Kubernetes的解决方案。我们将继续发布80&Company公司内部学习会的活动!感谢您一直阅读到最后!请也关注我们的Qiita组织和Twitter官方账号!
文献引用