Kubernetes 应用管理领域总揽和入门实践|学习笔记(一)

简介: 快速学习 Kubernetes 应用管理领域总揽和入门实践

开发者学堂课程【Kubernetes 云原生管理实践Kubernetes 应用管理领域总揽和入门实践】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/751/detail/13220


快速学习 Kubernetes 应用管理领域总揽和入门实践


内容介绍:

一、创立 OAM 的背景和原因

二、OAM 基本概念

三、部署 OAM 应用


一、创立 OAM 的背景和原因

1、OAM :自包含、关注点分离的云原生应用定义

1)构建以应用为中心的 Kubernetes

k8s 统一了底层基础设施 (Compute, Network, Storage), 但是在应用层上没有进一步往上抽象。大家在 K8s上主要以使用单个 workload 为主。一旦能力多了,整个管理和扩展的难度会增大,且用户体验也不够友好。

 

2、尝试往应用层做抽象,做统一的云原生应用管理架构。

云原生应用管理架构的领域建模:

Clean architecture :可扩展、易标准化的架构

•越往里,依赖越低,抽象程度越高,接口设计越稳定

•核心层为通用的应用模型 (OAM)PaaS 平台基础能力→用户展示和体验层

 

3、什么是 OAM ?为什么要用 OAM

ubernetes 目前主要价值在于统一了基础设施层,但是在应用层上并没有进一步抽象。大家在 Kubernetes 上主要还是使用单个 workload 为主,一旦能力多了,整个管理和扩展的难度就会增大,并且用户体验也不够友好。为了解决这些问题,尝试往应用层上做抽象,做统一的云原生应用管理架构。有了这个目标,这一层云原生应用管理架构又该怎样建模?可以借鉴微服务领域建模的思想,分享一篇叫做 Clean architecture 领域建模的文章。

image.png

 

这篇文章最核心的思想表达了这样一个观点,一个好的架构设计,关键在于把不容易变换的接口单独分层和抽象出来。越是不容易变化的,在模型里就越靠近或成为内核。一个内核依赖程度越低,抽象程度越高,可重用和标准化能力随之越强。

 

4、设计一个 Paas 层架构模型也是同样的道理。

image.png

最内层的核心是一个通用的应用模型,他有一些特征,比如自包含、关注点分离、结构化组合等。往外一层是 Paas 平台的基础能力,比如 Kubernetes 原生的或自定义的资源、外部的云资源、应用的生命周期管理等等。最外层是用户的展示和体验层,包括 IaC 工具,接下来要讲的 CUE 也是属于这一部分的内容。以及 CLI/UI 工具,类似于 Docker Compose 的定义文件、Source Image 工具等。

 

二、OAM 基本概念

1、OAM 基本概念

WorkloadDefinition:cloneset workload definition

TraitDefinition:ingress trait definition

Component

ApplicationConfiguration

•自包含:所有服务组件和运维能力都在一个定义里。

•结构化: traits attached to components, 避免了 label selector 号等关联资源的方式,让用户使用更简单,体验也更友好。

 

2、OAM 里面有一个目录 Definition 的概念,目前用户 workload Kubernetes 上,它会定义成 CRD,而目录 definition 是帮助 CRD 外再加一些 OAM 本身的概念,比如说子资源的信息等等内容在里面。

image.png

 

3、trait 是一个作用在目录上的运维能力,trait definition 跟目录 definition 类似,是运维能力定义成一个 CRDtrait definition 包住 CRD 外加一些 OAM 本身的概念,比如说下图中的 appliesto

image.png

 

表达可作用于的 workload 类型,还有表达自动填写 workload 信息的字段。

 

4、这里有很多 Componet,这些之后会谈到他都是研发来定义的,每一个 component 代表的是一个微服务的组件。一个 component 是对 workload 实例的一层分装,帮助他来表达其他的内容,比如说 Paramittens

image.png

 

5、Application configuration 是运维侧给 Components 加上运维能力或者最终部署物。直接来看例子。

image.png

 

在这个例子可以看到 Application configuration 是自包含的。所有需要的内容,比如需要多少组件、运维能力都包含在一个含义里面,也就是最终的 Application Configuration。同时它也是结构化的,他的traits和运维能力会 attach component 上,避免了 label selector 等离散的绑定方式,使用户体验更简单也更友好。

 

三、部署 OAM 应用

1、在 demo 里面,将通过 OAM 来部署一个应用。Demo 会依赖 KinD,在本地通过 doc 来运行 Kubernetes 的一种方式。我写了一个 README 来说明有一个样例来给大家展示如何去部署 OAM 应用。首先进到 OAM 目录下。

image.png

 

README 是刚才读的内容,复制 bash create-cluster.sh,接下来创建一个 cluster,一边创建一边可以看cluster做了什么。

image.png

 

他是创建一个 kind cluster,这个 kind cluster有一些本地的 pormetic,本地 pormetic 可以让本地通过 ingress 直接访问里面的服务。kind cluster已经创建完毕。

oam git:(master) bash create-cluster. sh

Creating cluster"kind"...

Ensuring node image(kindest/node:v1.18.2)

Preparing nodes

writing configuration

Starting control-plane

Installing CNI

Installing StorageClass

Set kubectl context to"kind-kind"

You can now use your cluster with:

kubectl cluster-info--context kind-kind

Not sure what to do next? Check out https://kind.sigs.kess.io/docs/user/quick-start/

oam git:(master)

 

2、接下来把 ingress control

kubectl apply-f https://raw.githubusercontent.com/

kubernetes/ingress-ngins/master/deploy/static/provider/kind/deploy.yaml

kind cluster 安装。安装完成如下图

image.png

 

3、在本地构建一个 flask app。复制

docker build-t flash-sample:v1.

kind load docker-image flask-sample:vl

看一下 dockerfile 里面引用 nginx-flask python,并且把本地的 flash app 的代码复制进去。

FROM tiango lo/uwsgi-nginx-flask-python3.8

COPY ./app/app

Flash app 很简单,他直接返回 hello world

 

4、第二个命令 kind load 虽然在本地构建了一个 image

kind load docker-image flask-sample:vl

但是并没有 posh 到远端,而 kind load 可以直接把 image load 到本地 kind 的集群里,这样里面的 kind 部署 deporment 也能直接识别里面的 image,不需要从远端在部一遍。Image 已经 build 完成。

image.png

 

5、接下来这一步将会把 OAM 运行起来

kubectl create namespace oam-system

helm repo add crossplane-master https://charts.

crossplane.io/master/

helm install oam-namespace oam-system crossplane-master/

oam-kubernetes-runtime—devel

通过 helm 的方式来安装,把 crossplain master 作为一个 vipor 加进来,基于 vipor 有一个 OAM Kubernetes runtime,并且把 runtime 装到 oam-system namespace 上面。现在 namespace 下面已经有 oam-system,里面runtine 也被部署起来了。

image.png

6、接下来部署应用。

Kubec apply  -f config /

这个应用里面有 definition 的文件,这个 definition 的文件就是定义了需要部署 load trait 都有哪些?还有一些 compote 文件,就是刚刚 flask app 作为一个 Component 部署进去了。

image.png

最后就是 componentcomponent 也给他打上了 trait,包括 service 的能力和 ingress 的能力,也就是给它加上了一个访问的运维能力。

 

7、ingress 绑定了本地的 pod,可以直接从 local host 上访问。访问成功会显示

oam git:(mastercurl http//localhost/

Hello World from Flask%

这样这个 demo 就完成了。最后需要把他清理掉。

Kubectl delete -f config/

Kind delete cluster

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
自然语言处理 安全 程序员
OpenClaw(Clawdbot)阿里云及本地部署喂饭级教程:附高实用Skill清单
很多用户使用OpenClaw时觉得“不够顺手”,核心原因是未搭配适配场景的Skill(技能插件)。作为OpenClaw的核心扩展能力,Skill直接决定其实用性——无论是程序员开发、职场人办公,还是自媒体创作,选对Skill能让效率翻倍,告别重复操作。
1342 4
|
3月前
|
人工智能 机器人 网络安全
OpenClaw 多机器人阿里云+本地部署实战教程,+Telegram多Gateway+多Bot架构搭建分工明确 AI 小团队
把OpenClaw当作单一聊天框使用,迟早会陷入“上下文污染、模型切换频繁、任务互相抢占”的困境——让写文案的Agent聊技术,让查资讯的Agent写代码,最后变成“万能但不靠谱”的杂物堆。真正高效的用法是将其拆分为“专业小队”:用多个Telegram Bot作为入口,搭配多OpenClaw Gateway隔离运行,每个Bot对应一个专项Agent,私聊不同Bot即可切换“专业助手”,无需手动输入命令切换身份。
1381 2
|
弹性计算 Kubernetes API
Kubernetes 驱动的 IaC,Crossplane 快速入门
Crossplane 是一个开源的 Kubernetes 扩展工具,允许用户通过声明式配置直接在 Kubernetes 中管理云资源。对于阿里云开发者,借助 Crossplane 和官方提供的 provider-upjet-alibabacloud,可以像管理 Pod 一样轻松操作 ECS 实例、VPC 和 OSS Bucket 等资源。本文介绍了 Crossplane 的核心概念,并通过快速入门指南演示了如何安装 Crossplane、配置阿里云认证并创建第一个 VPC 资源。
1376 37
|
人工智能 运维 API
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
606 1
|
人工智能 资源调度 调度
云上AI Infra解锁大模型创新应用
本节课程由阿里云智能集团资深技术专家王超分享,主题为AI基础设施的发展趋势。课程聚焦于AI Infra设计与Scaling Law,探讨了下一代AI基础设施的设计目标、功能升级及推理场景中的应用。主要内容包括高效支持大规模模型训练和推理、全球调度系统的设计、Rack level的Scale优化以及多租户容器化使用方式。通过这些改进,旨在提升并行效率、资源利用率及稳定性,推动AI基础设施迈向更高性能和更优调度的新阶段。
|
存储 安全 Devops
Office软件打开速度慢的解决:禁用加载项
本文介绍基于修改加载项,解决Microsoft Office系列软件开启速度较慢的办法~
1276 1
Office软件打开速度慢的解决:禁用加载项
|
弹性计算 负载均衡 安全
企业级DMZ上云场景方案
随着企业业务云化进程逐渐进入深水区,简单地使用云上资源出入公网已经无法满足业务的诉求,安全、成本、权限、监控等诉求的迭代,需要企业有系统性地视角来考虑如何做好公网出入口(DMZ)的规划设计。
企业级DMZ上云场景方案
|
存储 Serverless Python
在Python中,如何使用嵌套调用来实现函数的组合?
【2月更文挑战第6天】【2月更文挑战第16篇】在Python中,如何使用嵌套调用来实现函数的组合?
315 0