在开始使用Kubernetes之前,我总结了一些可能需要的知识

概要

Kubernetesは、コンテナを基としたインフラのオーケストレーションツールです。

非常に多機能で、宣言的な記法でのインフラコード管理によって、柔軟かつ堅牢なインフラストラクチャを構築することができます。その一方で、(Kubernetesのみの知識に関わらず)非常に学習コストが高いという側面も持ち合わせています。

在这篇文章中,我将写下一些在了解Kubernetes时可能需要的关键词和为什么需要它们的简单解释。

关于这个项目,由于是以自己陷入困境或遇到麻烦为基础,所以可能会有人认为有些内容不足或过多。

※作者我尽管写得很自大,但并不是因为我理解得很深,如有不当之处请谅解。

由于在 Twitter 上发布招募信息后,收到了超出预期的积极反应,因此我们决定进行本次总结。

↓原始推文

【緩募】K8sを始めるために理解が必要なドメイン知識REST、アジャイル、Git、docker(コンテナ)、IaC、クラウドインフラの基本的な構成、分散処理、マイクロサービス、認証認可他にもある気がするが、あと何があるだろう?— inductor@技術書典「う47」 (@_inductor_) 2019年3月6日

必要的知識清单

开发方法或工具

Docker(容器)

KubernetesはかつてはDockerに強い依存関係を持っていましたが、今はそうでもありません。しかしながら、コンテナというエコシステムを理解するうえでDockerの基本的な構想を知っておくことは必須ですし、Dockerを理解したうえでなぜKubernetesを使うのかというところへの理解に繋げていくのがよいかと思います。

Git(基特)

或许并非必须要有Git,但代码版本控制是必不可少的。我们将其视为行业标准的Git。若没有它,Kubernetes的配置管理无法实现,也无法实现应用程序的自动部署等必要功能。

敏捷

不仅仅限于Kubernetes,我个人认为容器化应用和敏捷开发之间有着密切的关系,以至于无法分离。即使不进行敏捷开发,我认为了解为什么容器和敏捷开发相配是很重要的。

微服务

微服务不仅需要关注应用程序本身的设计,而且对基础架构的配置也非常重要。在管理松耦合和分散的应用程序方面,容器和其管理平台Kubernetes可以说非常适合。(由于我无法很好地解释,所以请其他人代替一下。)

DevOps

Kubernetes(というかコンテナ)を利用したいというモチベーションの1つに、DevOpsを実現するためのプラットフォームとして選定することがあります。
クラウドネイティブとDevOpsにも密接な関係性があると筆者は考えており(要出典)、知らない人は勉強しておきましょう。

基础设施即代码(IaC)

Kubernetes的配置管理通常使用yaml文件进行。了解IaC是必需的。

持续集成/持续交付

テスト書きましょうテスト(吐血)
Kubernetesに限った話ではありませんが、抽象化されたインフラを最大限に生かすための戦略として、テストやデプロイの自動化、それに伴ったパイプラインの構築はもはや必須レベルだと思います。

协议

REST(HTTP):表述性状态转移(超文本传输协议)

在Kubernetes中,包括使用CLI进行操作,许多处理都由API Server处理。因此,对于基本的HTTP通信和基于其的REST API的知识可以说是必备的。
虽然不是必需的,但了解一些有关HTTP/2的基本知识可能会有额外的好处。此外,了解一些关于gRPC的(虽然不了解太多)知识也可以。

服务器的基础 (Sā fǔ qì de jī chǔ)

基本的的云基础架构配置

Kubernetesのプロジェクトを現在管理しているのはCloud Native Computing Foundationという団体ですが、彼らの掲げるCloud Nativeという概念を実現する最も大きなコンポーネントの1つがKubernetesです。
逆に言えば、Cloud Nativeとは何か、クラウドによって実現できるインフラにはどんな特徴があるかといった理解を持っておくことは非常に重要だと思います。

儲存空間

インフラの基盤であるKubernetesにおいて、データ格納先であるストレージも非常に重要な概念です。ただ、オンプレとパブリッククラウドでは必要になる知識がちょっと違うかもしれません。

*NIX操作系统的基本原理

コンテナはカーネルの機能であるcgroupsやnamespaceを利用したisolationを行っています。カーネルはLinuxのものを使いますので、みなさんLinuxチョットデキルエンジニアになりましょう(自戒)
というかこれが大体わかったらもうそれだけで勝利な予感がします。

分散处理 chǔ lǐ)

分散処理なにもわからない。
Kubernetesはコンテナオーケストレータという立ち位置が非常に強いですが、分散処理の基盤という側面も持ち合わせています。GPUを使った機械学習基盤の構築や、大規模なワークフローをKubernetesのPodを使って動かすなど、単なるアプリケーション基盤に限らず、様々なユースケースもありますので、その特徴は理解しておくとよいでしょう。

安全

※不过,这并不是要事先知道,而是应该抱着“这样的事情正在等着我”这样的心态来思考更好。

認證和承認

在微服务中,谈到安全性就是指认证和授权,对吧?在Kubernetes中,认证和授权的概念也非常重要,正确分配所需权限是一个永恒的挑战,不仅仅是Kubernetes操作员,开发人员也应该有基本的理解(自警)。

机密情报的管理方式 de

保密情报的管理是容器化中最重要的挑战之一。虽然有各种各样的工具可供选择,但当然服务和环境需求会对其产生很大的影响,所以了解有哪些工具将会更有帮助。

网络

鉴于基础设施,当然也需要网络知识。基于TCP/IP模型,尤其是对L3/L4/L7的基本理解是必要的(作者不幸去世)。

域名解析系统 (DNS)

Kubernetesはサービスディスカバリを目的として内部DNSを抱えています。少なくとも浸透したと言わない程度には知っておくべきでしょう。

草率的总结

哇,真的很多啊。
要实现SRE或DevOps这样的组织,需要拥有或多或少地具备这些技能组合的工程师。
当然,我认为不需要全部都理解,但能看到这样的世界的大致景色,可能对完全理解Kubernetes会有所帮助吧。

希望参与Kubernetes基础设施的各位,让我们一起编写代码吧!
希望参与Kubernetes后端的各位,要完全理解Linux!

因为写作过程中,感到自己的知识欠缺而感到痛苦,所以我决定结束了!!!!!

广告
将在 10 秒后关闭
bannerAds