实战 Kubectl 创建 Deployment 部署应用

7821dfcfab3ad591624bc99291632d4f.gif

作者 | 洲的学习笔记

来源 | CSDN博客

本篇文章主要是实战 Kubectl 创建 Deployment 部署应用。

通过本期文章:

我们将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。

02246956f261e8bb843ee0b43fce7431.png

用 Kubectl 创建 Deployment

当运行 Kubernetes 集群,就可以在其上部署容器化应用程序。

此时,需要我们创建 Kubernetes Deployment 配置。

  • Deployment 指挥 Kubernetes 如何创建和更新应用程序的实例。创建 Deployment 后,Kubernetes master 将应用程序实例调度到集群中的各个节点上。

创建应用程序实例后,Kubernetes Deployment 控制器会持续监视这些实例。如果托管实例的节点关闭或被删除,则 Deployment 控制器会将该实例替换为集群中另一个节点上的实例。这提供了一种自我修复机制来解决机器故障维护问题。

在没有 Kubernetes 这种编排系统之前,安装脚本通常用于启动应用程序,但它们不允许从机器故障中恢复。通过创建应用程序实例并使它们在节点之间运行, Kubernetes Deployments 提供了一种与众不同的应用程序管理方法。

1、部署第一个在K8s上的应用程序

34efb316a8ef7dc27d82da74f2edc955.png

接下来将使用 Kubernetes 命令行界面 Kubectl 创建和管理 Deployment。Kubectl 使用 Kubernetes API 与集群进行交互。将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。

77d733429c70f2aa745e2d092676ff98.png

实战部署

1、查看Kubectl配置

Kubectl命令的常见格式是:Kubectl action resource。这将对指定的资源(如节点、容器)执行指定的操作(如创建、描述)。我们也可以在命令之后使用——help来获得关于可能参数的额外信息(kubectl get nodes——help)。

通过运行kubectl version命令,检查kubectl是否被配置为与集群通信:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.4", GitCommit:"e87da0bd6e03ec3fea7933c4b5263d151aafd07c", GitTreeState:"clean", BuildDate:"2021-02-18T16:12:00Z", GoVersion:"go1.15.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:20:00Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

通过上述代码,可以看到Kubectl已经安装,可以看到客户端和服务器版本。

2、查询集群中节点信息

接下来我们需要查询集群中的节点信息,使用Kubectl get nodes命令。

$ kubectl get nodes
NAME       STATUS   ROLES                  AGE     VERSION
minikube   Ready    control-plane,master   3m44s   v1.20.2
$

通过上述的命令可以看到可用的节点。Kubernetes将根据Node可用资源选择部署我们的应用程序的位置。

8f3f4112979c1253fb0ed6e54ee8f23e.png

3、部署程序应用

现在需要使用Kubectl创建部署命令在Kubernetes上部署我们的第一个应用程序。我们需要提供部署名称和应用程序映像位置(包括Docker中心之外托管的映像的完整存储库url)。命令如下:

kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
deployment.apps/kubernetes-bootcamp created

上一个命令为我们实现了:

  • 搜索可以运行应用程序实例的合适节点(本次实验环境只有1个可用节点)。

  • 计划应用程序在该节点上运行。

  • 配置集群在需要时在新节点上重新计划实例。

现在要列出部署,使用kubectl get deployments部署命令:

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           80s

可以看到有一个部署运行着你的应用程序的单个实例。这个实例运行在节点上的Docker容器中。

74e9905686599a6fd43f392b6af0e09e.png

4、查看部署的程序

Kubernetes内部运行的Pods是在一个私有的、孤立的网络上运行的。默认情况下,它们对同一个kubernetes集群内的其他pods和服务是可见的,但在该网络之外是不可见的。当使用Kubectl时,通过一个API端点与应用程序进行交互。

Kubectl命令可以创建一个将通信转发到集群范围的私有网络的代理。该代理可以通过按control-C终止,并且不会显示任何内容。

现在将打开第二个终端窗口来运行代理。

echo -e "\n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n";

503404c626901e04c1c8e8477f3fb509.png

现在,我们主机(在线终端)和Kubernetes集群之间有了连接。代理允许从这些终端直接访问API。

可以看到通过代理端点托管的所有api。比如,可以使用curl命令curl http://localhost:8001/version直接通过API查询版本:

$ curl http://localhost:8001/version
{
"major": "1",
"minor": "20",
"gitVersion": "v1.20.2",
"gitCommit": "faecb196815e248d3ecfb03c680a4507229c2a56",
"gitTreeState": "clean",
"buildDate": "2021-01-13T13:20:00Z",
"goVersion": "go1.15.5",
"compiler": "gc",
"platform": "linux/amd64"
$

8fefc5b8b4b3b5d915c5017a874da255.png

需要注意的是,需要检查终端顶部。代理在一个新选项卡(终端2)中运行,最近的命令在原始选项卡(终端1)中执行。代理仍然在第二个选项卡中运行,这允许curl命令使用localhost:8001工作。

如果无法访问端口8001,请确保上面启动的kubectl代理正在运行。

API服务器将根据pod名称自动为每个pod创建一个端点,这个端点也可以通过代理访问。

首先,需要获取Pod名称,并将其存储在环境变量POD_NAME中:

使用:**export POD_NAME=$(kubectl get pods -o go-template --template ‘{{range .items}}{{.metadata.name}}{{“\n”}}{{end}}’)**命令

$ export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
$ echo Name of the Pod: $POD_NAME
Name of the Pod: kubernetes-bootcamp-57978f5f5d-mhtpf

可以通过运行下面的API来访问Pod:

curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/

728a70325df1f8fd32f807e1fa3c69fa.png

为了在不使用代理的情况下访问新部署,需要一个服务,这一点我们将在下一篇文章中进行讲解。

500bd879f54362c5c21ef3e6cf59db82.png

总结

通过本篇文章,我们已经大致了解到了如何在实战中Kubectl创建Deployment部署应用。也学习熟悉了创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。

35ecc9dc95ceba4c5e69d011ac763c50.gif

往期推荐

Redis 内存优化神技,小内存保存大数据

使用 nginx 轻松管理 kubernetes 资源文件

Redis 内存满了怎么办?这样置才正确!

中间表是如何被消灭的?

afdac888298e87b202c1093da06f5218.gif

点分享

5e228567a761b1ad24b94d2a63f941ed.gif

点收藏

6b7d3b5de76736338e60233bc7e35fb9.gif

点点赞

d4ad82285c3929b9957bc05f571d545a.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能提升一倍,云原生网关支持 TLS 硬件加速

简介:业界在优化 HTTPS 的性能上也做了诸多探索,传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面如何优化也无法满足流量日益增长的速度,加上 CPU 摩尔定律已入暮年&…

Linux 中如何检查开放的端口

作者 | 刘光录来源 | TIAP无论你的服务器是用的Linux还是桌面系统,了解系统开放的端口,和正在使用的端口,在各种情况下都会有所帮助。比如,如果你的服务器中正在运行着 Apache或者Nginx,那么其端口应该为80或者443&…

微服务应用实现无损上下线实践

简介:本文是阿里云微服务引擎MSE在应用发布时提供的无损上下线和服务预热能力最佳实践介绍。 本文是阿里云微服务引擎MSE在应用发布时提供的无损上下线和服务预热能力最佳实践介绍。假设应用的架构由Zuul网关以及后端的微服务应用实例(Spring Cloud&…

计算机策划知识竞赛有创意的主题,【社团活动】首届创意·科技文化节--第八届计算机趣味知识竞赛决赛...

就21世纪而言,计算机莫过于是至今最成功的创新,作为计算机科学系的学子们担当着社会的前行者,从语言不和的英文代码,到逻辑化的函数循环,甚至有人开玩笑高呼着“c从入门到放弃”。谁又忍心让大家始终学习在枯燥中呢&am…

3月2日,阿里云开源 PolarDB 企业级架构即将发布

简介:2022年3月2日,开源 PolarDB 企业级架构将迎来重磅发布!本次发布会将首次公开开源 PolarDB 的总体结构设计和企业级特性,对 PolarDB for PostgreSQL 的存储计算分离架构、HTAP架构、三节点高可用架构进行全面介绍。 2021年&a…

产学研专家共议中国金融机构数字化转型,“守正创新”成主基调

《中国金融机构数字化转型》白皮书同期发布。 7月12日,由华为云与《清华金融评论》联合主办,清华五道口“数字中国”企业家课程项目提供学术支持的《中国金融机构数字化转型》专题研讨会在线上举办,并在央视财经等平台直播。研讨会邀请到多位…

极速生成缩略图,Serverless 支撑赛事转播锁定冬奥亮点

简介:阿里云函数计算(FC)支撑用户开发赛事视频截图的核心业务代码,实现了弹性高可用免运维的直播视频截图服务,满足用户开发成本低、一键部署的业务需求,比赛期间完美支撑视频转播实时锁定冬奥亮点。 作者…

html拼接日期,html日期加减

//显示某年某月某日function getForecastTime(date) {date new Date(date);var nDate date.getFullYear() "年";nDatedate.getMonth() 1 "月" date.getDate() "日";return nDate;}//日期加减function dateChange(num, date) {debugger;if…

“电信级”运行多年,亚信科技推出核心交易数据库AntDB7.0

亚信科技AntDB数据库为全国24个省份的10亿多用户提供7*24小时实时在线服务,已在通信运营商核心系统持续稳定运行多年。同时,AntDB在金融、交通、能源、公共服务等多个领域商用落地。 数字化浪潮和信创的趋势下,国产数据库市场迎来了快速发展期…

关于质量标准化的思考和实践

简介:最近部门在推质量标准化,通过质量标准化,推动质量内建,从而提高研发部门的交付质量,作者深度参与其中,并在推进过程中总结了一些经验以及思考,在此通过以下定义、共识、实践三个大方向和大…

计算机科学与因果关系,计算机科学与技术

摘要:In order to improve the detection reliability of effective connectivity in brain network, an fMRI (Functional Magnetic Resonance Imaging) analytical approach of effective connectivity is proposed based on the Granger causality (GC) and the …

看懂这5幅图,研发效能分析和改进就容易了

简介:作为 CTO 或企业管理者,我们如何去了解和衡量研发团队的研发效能呢?作为 PMO 和效能负责人,我们该从哪几个维度来回答关于研发效能的问题呢?如何通过效能数据分析,帮助企业管理者透明化研发效能水平和…

关于挂载存储的这个小细节,值得你关注一下

作者 | 江小南来源 | 江小南和他的小伙伴们引言前两天,公司有个同事跑过来问我一件事:我在制作镜像的时候明明把文件已经放到镜像里面去了,为什么kubernetes部署应用的时候文件没有了?听完这话,我看了看Dockerfile是这…

PolarDB 并行查询的前世今生

简介:本文会深入介绍PolarDB MySQL在并行查询这一企业级查询加速特性上做的技术探索、形态演进和相关组件的实现原理,所涉及功能随PolarDB MySQL 8.0.2版本上线。 作者 | 遥凌 来源 | 阿里技术公众号 本文会深入介绍PolarDB MySQL在并行查询这一企业级查…

上海音乐学院计算机基础,上海音乐学院

2018年(第11届)中国大学生计算机设计大赛计算机音乐创作类决赛于8月26日—30日在浙江音乐学院举行,上海音乐学院音乐工程系大二学生蔡岳均作品《埙钹革》、大四学生赵子仪作品《踏风》(指导老师均为刘灏副教授)在决赛中分别获得计算机音乐创作专业组二、三等奖。中国…

从技术到管理,程序员如何实现螺旋上升?

作者 | 李昊 出品 | 《新程序员》编辑部从开发者到技术管理者应该如何提升能力?在李昊看来,开发和管理之间的“鸿沟”并非很难跨越,他将从“深入理解基层技术管理岗位角色、纠偏对技术管理者的认识误区,以及通过日常执行层真正…

80%的软件环境管理问题,根因都在这里

简介:80%的软件环境管理问题,根因都在这里,云效云原生应用管理平台AppStack正是基于OAM的应用交付平台,企业在云效AppStack,可以通过应用编排、占位符、变量等声明式定义,实现一套编排多环境差异化部署&…

用计算机算小学题目,小学计算机入编考试考试试题.doc

先给你一份吧文昌一小学教师计算机考试试题小教师计算机考试试题?(答题时间150分钟,满分100分)学校_________________????姓名_________________?????成绩_________________一、填空题(?30分)⒈Windows?XP中的“XP”应解释为:体验。Windows?…

开发之痛:稳定的测试环境,怎么就那么难

简介:开发之痛:稳定的测试环境,怎么就那么难。对于生产环境,准确、稳定最重要,我们推荐以应用为中心的基于OAM和IaC的实践方式;对于测试环境,隔离、低成本和稳定的依赖是最重要的,我…

天腾动力携Motinova 和 Welling E-bike电驱新品亮相EUROBIKE 2022

【德国法兰克福】2022年7月13日,欧洲国际自行车贸易博览会(EUROBIKE 2022)在法兰克福开展迎客。作为欧洲三大自行车展之一,EUROBIKE 2022被誉为行业潮流的风向标,吸引着品牌商、贸易商、采购商以及众多自行车爱好者的目…