Kubernetes
文章平均质量分 78
Kubernetes 在 SAP 产品开发中的应用
汪子熙
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达16年的 SAP 产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign,SAP CRM,SAP Cloud for Customer,SAP S/4HANA,SAP Commerce Cloud(电商云)等标准产品的研发工作。
Jerry 工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发, 对包括 SAP UI5 在内的多款 SAP 自研框架有深入的研究。
展开
-
什么是 Kubernetes cluster 的 Node affinity
例如,您可以使用类似于"matchExpressions"和"matchFields"的字段来指定节点标签的匹配规则,以决定Pod是否应该被调度到节点上。例如,将CPU密集型的应用程序调度到专门的高性能节点,将内存密集型的应用程序调度到具备大内存容量的节点。它允许您根据节点的属性和标签,指定Pod在哪些节点上可以调度和运行。需要注意的是,在这两种类型中,IgnoredDuringExecution表示一旦Pod被Kubernetes调度到节点上后,即使节点的标签发生变化,Pod也会继续在该节点上运行。原创 2023-06-12 14:19:23 · 459 阅读 · 0 评论 -
SAP Commerce Cloud 构建环境类型介绍
SAP Commerce Cloud 的构建与环境无关,即所谓的 environment agnostic,这意味着同一个构建可以适用于多个 Commerce Cloud 环境。这种设计的优点是,在开发或 staging 环境中测试的相同代码,可以不被修改地直接部署到生产环境中。特定于环境的设置包含但不局限于下列这些示例:域名IP 地址SSL 证书资源(数据库、媒体存储)的 URL 或凭据任何外部系统的 URL 或凭据技术用户的凭证。机器大小或可用资源量(CPU、内存)换言之,Comm原创 2022-07-22 10:33:30 · 176 阅读 · 0 评论 -
在 Google Kubernetes Cluster 上使用 HANA Expression Database Service
至此,我们完成了在GoogleKubernetesCluster里操作HANAExpressionDatabaseService的操作步骤。从整个过程不难感觉出,将包含HANAExpression的Docker镜像部署在GoogleKubernetesCluster并运行在Pod内,实现了HANAExpression服务的开箱即用,从而避免了On-Premises部署模式下HANAExpression繁琐的安装和配置步骤。httpshttps。...原创 2022-07-22 10:09:17 · 169 阅读 · 0 评论 -
在 SAP 云平台上部署和运行 Docker 应用
本文详细介绍了基于一个开发好的SpringBoot应用,如何将其制作成Docker镜像,并且部署到SAP云平台上运行的步骤。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。原创 2022-07-21 21:51:17 · 378 阅读 · 0 评论 -
一种基于事件驱动架构的 SAP 产品集成方案介绍
Kyma 是SAP开源的一个基于 Kubernetes 的云原生应用开发平台,能够允许SAP的partners以简捷而现代的方式,对SAP的云解决方案和传统On Premises产品进行连接,集成和扩展。所谓“现代”,即partners在进行二次开发时,可以充分利用近些年来企业级开发领域不断涌现出的新技术,比如Serverless计算,微服务架构等等。Kyma是完全开源和免费的,任何人都可以试着在自己的本地电脑上进行安装。当然,尝试自己本地安装有一些门槛,因为安装过程中需要从Google的网站上拖取一些原创 2022-05-21 15:12:04 · 264 阅读 · 0 评论 -
云原生平台 Kyma 上创建的 Lambda Function 的技术实现细节介绍
在企业级开发应用进入云原生开发时代之后,Serverless 架构这个词也频繁出没于各大技术媒体里。Serverless的字面意思容易给人以 不再需要服务器了 的误解。站在整个企业的角度上讲,ABAP Netweaver 的 SICF 开发模式,和 Serverless 架构几乎没有任何联系,两者区别很大:一个是需要在部署于企业本地的服务器上编写函数代码,另一个则是直接在云服务提供商提供的平台上编写代码。然而,从只需要专心搬砖的程序员个体视角出发,两者也有一些相似之处:程序员都不需要关注自己编写的代码原创 2022-05-20 22:40:26 · 358 阅读 · 4 评论 -
Docker 实战教程之从入门到提高 (八)
本系列首先介绍了 Windows 操作系统下 Docker 软件的安装和使用前提,包括开启 Hyper V 技术后遇到的一些错误消息和解决方案,最后介绍了如何将 Docker 镜像部署到基于 Kubernetes 的 Kyma 平台并运行的详细步骤。原创 2022-04-19 17:03:30 · 264 阅读 · 0 评论 -
Docker 实战教程之从入门到提高 (七)
本教程的前六篇文章:Docker 实战教程之从入门到提高 (一)Docker 实战教程之从入门到提高 (二)Docker 实战教程之从入门到提高 (三)Docker 实战教程之从入门到提高 (四)Docker 实战教程之从入门到提高 (五)Docker 实战教程之从入门到提高 (六)以及通过这篇文章的介绍,我们深入学习了 Docker 技术的三大要点。从本文开始,我们将学习如何将 Docker 镜像部署到云平台上并运行。练习1:将 SpringBoot 应用 Docker 化首先需要原创 2022-04-19 09:50:10 · 211 阅读 · 1 评论 -
Docker 实战教程之从入门到提高 (六)
本文首先介绍了给定一个运行在 Docker 容器中的 SpringBoot 应用,如何用两种不同的交互式方式进入容器实例内部查看其运行时生成的日志文件,回顾了之前学习过的 Dockerfile 里 VOLUMES 关键字的知识点,然后介绍了在 Docker 容器里运行 Microsoft SQL 服务器的详细步骤。原创 2022-04-18 10:54:28 · 860 阅读 · 0 评论 -
适合 Kubernetes 初学者的一些实战练习 (六)
本系列的前五篇文章:本实战练习系列的前五文章:适合 Kubernetes 初学者的一些实战练习 (一)适合 Kubernetes 初学者的一些实战练习 (二)适合 Kubernetes 初学者的一些实战练习 (三)适合 Kubernetes 初学者的一些实战练习 (四)适合 Kubernetes 初学者的一些实战练习 (五)本文继续我们的 Kubernetes 实战练习之旅。练习1:Kubernetes 里 secret 的使用方法介绍Kubernetes Secr原创 2022-04-12 11:37:00 · 237 阅读 · 0 评论 -
适合 Kubernetes 初学者的一些实战练习 (四)
本系列前三部分:适合 Kubernetes 初学者的一些实战练习 (一)适合 Kubernetes 初学者的一些实战练习 (二)适合 Kubernetes 初学者的一些实战练习 (三)练习1 - Kubernetes pod 的自动 scale (水平自动伸缩)kubectl scale 命令用于程序在负载加重或缩小时进行 pod 扩容或缩小,本练习我们通过一个实际例子来观察 scale命令到底能达到什么效果。命令行创建一个 deployment:kubectl run je原创 2022-04-12 11:22:01 · 229 阅读 · 0 评论 -
适合 Kubernetes 初学者的一些实战练习 (三)
本系列的前两篇文章:适合 Kubernetes 初学者的一些实战练习 (一)适合 Kubernetes 初学者的一些实战练习 (二)我们已经完成了下列在 Kubernetes 中的练习:如何在 Kubernetes 里创建一个 Nginx 应用如何在 Kubernetes 里创建一个 Nginx ServiceKubenetes 里 Pod 和 Service 绑定的实现方式使用 Kubernetes 里的 job 计算圆周率后 2000 位Kubernetes 里的 ConfigMa原创 2022-04-12 11:21:11 · 283 阅读 · 0 评论 -
适合 Kubernetes 初学者的一些实战练习(二)
本系列的第一篇文章,我们学习了每一个 Kubernetes 从业者的实际工作中几乎都会使用的步骤:创建 Deployment 和 Service,同时通过实际例子讲解了 Pod 和 Service 绑定的实现方式,介绍了使用 Kubernetes Job 计算圆周率这种费时的操作。本文作为 Kubernetes 学习系列的第二篇文章,我们继续学习 XX.练习1 - 使用脚本在 Linux 服务器上自动安装 Kubernetes 的包管理器 HelmHelm 之于 Kubernetes 好比 yum 之原创 2022-04-12 11:20:01 · 306 阅读 · 0 评论 -
适合 Kubernetes 初学者的一些实战练习(一)
本系列记录了笔者刚刚接触并学习 Kubernetes 时动手做过的一些练习,这里分享出自己的 Kubernetes 学习历程,希望对广大 Kubernetes 初学者有所帮助。练习1 - 如何在 Kubernetes 里创建一个 Nginx 应用使用命令行 kubectl run --image=nginx nginx-app --port=80 创建一个名为 nginx-app 的应用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ewrxNgg2-1648392372原创 2022-04-12 11:19:07 · 331 阅读 · 0 评论 -
适合 Kubernetes 初学者的一些实战练习 (五)
本实战练习系列的前四篇文章:适合 Kubernetes 初学者的一些实战练习 (一)适合 Kubernetes 初学者的一些实战练习 (二)适合 Kubernetes 初学者的一些实战练习 (三)适合 Kubernetes 初学者的一些实战练习 (四)本文继续我们的 Kubernetes 实战练习之旅。练习1 - 将 configmap 通过环境变量注入到 pod 里在 Kubernetes 官网里,曾经提到 Kubernetes 里的一个最佳实践(Best Practic原创 2022-04-07 22:41:41 · 729 阅读 · 4 评论 -
最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像
什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建。下面通过一个具体的例子来学习dockerfile的写法。新建一个dbuild文件夹,创建一个自定义的Nginx首页,逻辑很简单,显示一个自定义的图片文件train.jpg.我想基于标准的Nginx镜像做一些修改,让Nginx...原创 2018-11-26 23:43:19 · 503 阅读 · 0 评论 -
Docker镜像提交命令commit的工作原理和使用方法
在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中,以便在网络上下载使用。下面我们来动手实践。docker pull nginx:1.15.3用命令行启动一个容器:docker run -d -p 1080:80 --name jerry-nginx nginx:1.15.3localhost:1080进入容器的shell:doc...原创 2018-11-26 23:42:48 · 480 阅读 · 0 评论 -
如何使用Kubernetes里的NetworkPolicy
创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件。第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤。从第16行开始的ingress定义,定义了只有具备标签component=ads,module=app的pod才能够连接component=ads, module=db的pod。首先创建一个临时...原创 2018-11-20 21:54:25 · 224 阅读 · 0 评论 -
通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法
Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它。而容器产生的数据,会随着Pod消亡而自动消失。为了实现Pod内数据的存储管理,Kubernetes引入了两个API资源:Persistent Volume(持久卷,以下简称PV)和Persistent Volume Claim(持久卷申请...原创 2018-11-23 11:10:43 · 8739 阅读 · 2 评论 -
如何使用Kubernetes里的NetworkPolicy
创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件。第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤。从第16行开始的ingress定义,定义了只有具备标签component=ads,module=app的pod才能够连接component=ads, module=db的pod。首先创建一个临时...原创 2018-11-20 20:36:36 · 550 阅读 · 0 评论 -
Kubernetes API server工作原理
作为Kubernetes的使用者,每天用得最多的命令就是kubectl XXX了。kubectl其实就是一个控制台,主要提供的功能:1. 提供Kubernetes集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更;2. 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd)也就是说,我们在终端...原创 2018-11-19 23:28:05 · 459 阅读 · 0 评论 -
站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
这周Jerry在SAP上海研究院参加了一个为期4天的Kubernetes培训,度过了忙碌而又充实的4天。Jason,Benny和Peng三位大神的培训干货满满,借此机会,Jerry和过去的两位老领导Patrick和Evan叙了叙旧,也拜见了上海SAP圈子里的几位大佬。以前在网络上久闻大名,这次终于见到了大佬们本人,了却我一桩心愿。为什么SAP内部也在开展Kubernetes的培训呢?诞生于20...原创 2018-11-19 12:20:00 · 1149 阅读 · 0 评论 -
Kubernetes Helm入门指南
什么是Helm?这可不是暗黑破坏神里装备的名称:头盔,而是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理。我们Helm和Kubernetes的关系,我们可以理解成yum和CentOS,apt-get和Ubuntu的关系。Helm由两部分组成,客户端helm和服务端tiller。其中tiller运行在Kubernetes集群上,管理chart,而客户端hel...原创 2018-11-19 23:27:29 · 735 阅读 · 0 评论 -
Kubernetes 里的 secret 最基本的用法
Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。使用如下命令行创建一个secret:kubectl create secret generic admin-access --from-file=./username.txt --from-fi...原创 2018-11-19 12:20:41 · 1161 阅读 · 1 评论 -
Kubernetes stateful set 讲解 以及一个基于 postgreSQL 的具体例子
Stateful Set是Kubernetes 1.9版本新引入的一个概念,用于管理有状态的应用。Kubernetes官方文档:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/Manages the deployment and scaling of a set of Pods, and provid...原创 2018-11-19 12:19:14 · 638 阅读 · 1 评论 -
如何在Kubernetes里给PostgreSQL创建secret
创建一个initdb.sql文件,输入如下内容:– This is a postgres initialization script for the postgres container.– Will be executed during container initialization ($> psql postgres -f initdb.sql)CREATE ROLE adsus...原创 2018-11-16 22:25:43 · 273 阅读 · 0 评论 -
如何使用Kubernetes的configmap通过环境变量注入到pod里
在Kubernetes官网里,有这样一篇文章,提到了Kubernetes里的一个最佳实践就是把应用代码同配置信息分开,一种方式就是使用Kubernetes 1.2里引入的configmap概念。https://kubernetes.io/blog/2016/04/configuration-management-with-containers/configmap实际上就是一系列键值对,存储于...原创 2018-11-19 11:47:52 · 1319 阅读 · 0 评论 -
通过 describe 命令学习 Kubernetes 的 pod 属性详解
我们可以首先使用kubectl get pods命令得到pod列表,比如我们想研究pod nginx-storage-pod的明细:使用命令kubectl describe pod nginx-storage-pod > nginx-storage-pod.yaml, 将describe命令的输出重定向到一个yaml文件里。用vi打开这个yaml文件:pod的所有属性可以从这个yam...原创 2018-11-15 21:54:43 · 12656 阅读 · 1 评论 -
使用 describe命令 进行 Kubernetes pod 错误排查
我有一个pod名叫another,用kubectl create创建后发现过了29分钟,状态还是处于ContainerCreating阶段。使用kubectl describe命令检查:从错误消息发现是因为这个pod attach volume失败:FailedAttachVolume 2m1s (x22 over 31m) attachdetach-controller AttachV...原创 2018-11-15 21:53:55 · 5156 阅读 · 1 评论 -
一个简单的例子理解Kubernetes的三种IP地址类型
很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚。本文我们通过一个最简单的例子来学习。用如下命令行创建一个基于nginx的deployment:kubectl run nginx --image=nginx:maxline用kubectl get deploy查看成功生成的名为nginx的deployment:此时这个deploym...原创 2018-11-18 23:30:58 · 3723 阅读 · 0 评论 -
使用Kubernetes里的job计算圆周率后2000位
使用Kubernetes里的job(作业),我们可以很方便地执行一些比较耗时的操作。新建一个job.ymal文件:定义了一个Kubernetes job,名称为pi,类型为job,容器名称为pi,镜像为perl,执行的per命令为 print bpi(2000):这个ymal文件的完整内容:apiVersion: batch/v1kind: Jobmetadata:name: pi...原创 2018-10-10 11:55:10 · 682 阅读 · 0 评论 -
Kubernetes里的ConfigMap的用途
顾名思义,ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap同Kubernetes的另一个概念secret类似,区别是ConfigMap主要用于保存不包含敏感信息的明文字符串。创建方式:kubectl create configmap special-config --from-literal=i042416=jerry上述命令行创...原创 2018-10-10 11:54:24 · 1513 阅读 · 1 评论 -
ABAP Netweaver, SAP Cloud Platform和Kubernetes的用户区分
ABAP(1) Dialog: Individual, interactive system access.(2) System: Background processing and communication within a system (such as RFC users for ALE, Workflow, TMS, and CUA).(3) Communication:Dial...原创 2020-03-02 10:48:55 · 280 阅读 · 0 评论 -
如何在Kubernetes里创建一个Nginx service
Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的IP地址来访问我们部署的nginx应用不太合适。Kubernetes里推荐的方式是用Service来消费nginx服务。Service为一组Pod提供一个统一的入口,并为它们提供负载均衡和服务发...原创 2018-09-29 17:05:21 · 2868 阅读 · 0 评论 -
如何在Kubernetes里创建一个Nginx应用
使用命令行kubectl run --image=nginx nginx-app --port=80 创建一个名为nginx-app的应用结果: deployment.apps/nginx-app created使用命令行kubectl get pods查看创建结果,状态已经为running:使用命令行kubectl describe pods查看pod明细:把pod id记下来...原创 2018-09-29 17:06:18 · 1863 阅读 · 1 评论 -
如何处理Docker的错误消息request canceled:Docker代理问题
在本地安装Kubernetes时,遇到错误消息:request canceled while waiting for connection(Client.Timeout exceeded while awaiting headers)这个原因是Docker应用没有正确设置代理。在Mac上设置代理非常方便:Configure the proxies used by Docker to pul...原创 2018-09-29 17:26:54 · 4675 阅读 · 0 评论 -
SAP 业务技术平台(BTP) 上的 Business Rules Service 使用介绍
这是 Jerry 2021 年的第 44 篇文章,也是汪子熙公众号总共第 321 篇原创文章。在 SAP ABAP On-Premises 产品工作过的 ABAP 开发人员,可能都接触或者听说过 Business Rule Framework(简称 BRF,后面还有升级版 BRF+)这个框架。SAP BRF+ 主要包含实现存储功能的规则仓库(Rules Repository),以及根据用户输入,分析并执行规则,返回给用户处理结果的规则处理器(Rules Processor)两部分。前台提供的是基于 A原创 2021-06-20 16:16:50 · 982 阅读 · 0 评论 -
如何使用 SAP Kyma 控制台手动发送 SAP Commerce Cloud Mock 应用暴露的事件
网址:https://developers.sap.com/tutorials/cp-kyma-microservice-trigger.html本地路径:C:\Code\referenceCode\SAP Kyma教程例子\api-mssql-go(1) This tutorial relies on the Commerce mock application to publish events into the Kyma runtime.(2) bind the Commerce mock ap原创 2021-06-16 12:01:04 · 254 阅读 · 0 评论 -
一步步把 SAP UI5 应用部署到 SAP BTP Kyma 运行环境中去
这是 Jerry 2021 年的第 40 篇文章,也是汪子熙公众号总共第 317 篇原创文章。Jerry 2018年曾经写过两篇文章,介绍了如何在 Kubernetes 这个容器编排平台上运行一个包含 SAP UI5 应用的 Docker 镜像。在 Kubernetes 上运行 SAP UI5 应用(上)在 Kubernetes 上运行 SAP UI5 应用(下)SAP Kyma,是一个由 SAP 推进的开源的企业软件扩展平台,底层基于 Kubernetes,能以Serverless/微原创 2021-06-13 10:12:20 · 458 阅读 · 0 评论 -
如何创建最简单的 SAP Kyma Function
登录 SAP Kyma 控制台,创建一个新的 function:实现方式选择 nodejs:自动生成一个同名的 service. 点击 service 面板右下角的 Expose service 按钮,创建一个新的 API rule,将 function 暴露给 internet:选中 function,点击 expose function,创建 API rules:维护 api rule 的 name 和 hostname 字段:function 实现体里就一行语句:返回 Hello原创 2021-06-13 09:41:12 · 275 阅读 · 0 评论