为什么Kubernetes这么受欢迎

发布时间:2021-11-02 17:17:50 作者:iii
来源:亿速云 阅读:133

这篇文章主要讲解了“为什么Kubernetes这么受欢迎”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“为什么Kubernetes这么受欢迎”吧!

以数据(YAML)为基础的的架构

来自 Puppet[9] 和 Chef[10] 的世界,Kubernetes  的重大转变之一就是从以代码为基础的基础架构过渡到以数据为基础的基础架构(特别是 YAML)。Kubernetes 中的所有资源,包括  Pod,配置,部署,卷等,都可以简单地在 YAML 文件中表示。

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

这种表示形式使 DevOps 或站点可靠性工程师可以更轻松地完全表达其工作负载,而无需使用 Python,Ruby 或 Javascript  等编程语言编写代码。

以数据为基础的架构的其他好处包括:

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
package main deny[msg] {   input.kind = "Deployment"   not input.spec.template.spec.securityContext.runAsNonRoot = true   msg = "Containers must not run as root" }

可扩展性

Kubernetes 具有很好的可扩展性,开发人员对此非常满意。内置一些资源,例如  Pod,Deployment,StatefulSet,Secrets,ConfigMap  等。同时用户和开发人员可以通过“自定义资源定义[14]”添加更多资源。例如,如果我们想定义 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 可扩展性的另一种形式是开发人员编写自己的 Operators[15] 的能力,Operator 是在 Kubernetes  集群中运行的,遵循 control loop pattern[16] 的特定进程。操作员允许用户通过与 Kubernetes API 进行对话来自动管理  CRD(自定义资源定义)。

该社区有几种工具,允许开发人员创建自己的 Operators。这些工具之一是 Operator Framework[17] 及其 Operator  SDK[18]。SDK 为开发人员提供了一个框架,使他们可以快速开始创建 operator。例如,您可以从命令行[19]输入以下命令开始:

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

它将为您的 operator 创建整个样板,包括 YAML 文件和 Go 代码:

. |____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 推送到您的容器注册表:

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

如果开发人员需要更多控制权,则可以修改 Go 文件中的样板代码。例如,要修改控制器的详细信息,他们可以对 controller.go  文件进行更改。

另一个项目 KUDO[20] 允许您仅使用声明性 YAML 文件来创建运算符。例如,Apache Kafka  的运算符将定义为以下内容[21],它允许用户使用以下命令在 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 每三四个月发布一次主要版本,这意味着每年都有三到四个主要版本。推出的新功能的数量并未减慢,最新版本[22]的 30  多种新增功能和更改证明了这一点。此外,Kubernetes 项目 GitHub 活动表明[23],即使在这些困难时期,贡献也没有放缓的迹象。

这些新功能使集群运营商在运行各种不同的工作负载时具有更大的灵活性。软件工程师还喜欢拥有更多控件,以将其应用程序直接部署到生产环境中。

社区

Kubernetes 受欢迎的另一个重要方面是其强大的社区。首先,Kubernetes 在 2015 年发布 1.0  版本时捐赠给了一个与供应商无关的家庭:Cloud Native Computing Foundation[24]。

随着项目的推进,针对 Kubernetes 中的不同区域还有各种各样的社区  SIG[25](特殊兴趣小组)。他们不断添加新功能,并使其对用户更加友好。

Cloud Native Foundation 还组织了  CloudNativeCon/KubeCon,截至撰写本文时,CloudNativeCon/KubeCon  是世界上比较大的开源活动。该活动通常每年举行三届,吸引了数千名希望改善 Kubernetes  及其生态系统以及利用每三个月发布的新功能的技术人员和专业人士。

此外,Cloud Native Foundation 拥有一个技术监督委员会[26],与 SIGs[27]  一起,研究基金会在云原生生态系统中的新项目和现有项目[28]。大多数项目都有助于增强 Kubernetes 的价值主张。

最后,我相信,如果没有社区的有意识的努力来互相包容并欢迎任何新来者,Kubernetes 就不会取得成功。

感谢各位的阅读,以上就是“为什么Kubernetes这么受欢迎”的内容了,经过本文的学习后,相信大家对为什么Kubernetes这么受欢迎这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. Python什么时候开始受欢迎的
  2. Python为什么这么受欢迎

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes

上一篇:JS有哪些开发小技巧

下一篇:Windows 8.1下怎么修复无法连接到此网络的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》