持续集成之应用k8s自动部署

持续集成之应用k8s自动部署

Intro

上次我们提到了docker容器化及自动化部署[1],这仅仅适合个人项目或者开发环境部署,如果要部署到生产环境,必然就需要考虑很多因素,比如访问量大了如何调整部署,如何更好的应对大并发的情况,如何不停机更新应用,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理,于是 k8s 就出现了。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

k8s 十分强大,可以帮助我们很方便的实现应用的伸缩,也可以很轻易的实现不停机更新,更好更方便的实现服务高可用,还有很多很实用的功能,例如服务发现/负载均衡/配置中心等,更多 k8s 的介绍请参考https://www.kubernetes.org.cn/docs[2]

k8s 自动部署介绍

这里只是我自己的一些实践,不一定是最合适的,仅供参考。

自动部署流程:

•自己在 k8s 集群上手动创建 deployment 和 service•CI 自动构建新的 docker 镜像•CI 推送新的 docker 镜像到 docker hub 或者自己的 docker registry•更新 k8s 应用对应的 deployment 的镜像

示例应用

这里有一个 示例应用[3]

在部署了 k8s 集群环境的服务器上部署应用

wget https://raw.githubusercontent.com/WeihanLi/AccountingApp/dev/accountingapp-k8s-deployment.yaml	
kubectl apply -f accountingapp-k8s-deployment.yaml

配置CI,这里以 Azure Pipeline 为例

Azure pipeline 示例配置:

 pool:	vmImage: 'Ubuntu 16.04'	variables:	tagName: '$(Build.BuildNumber)'	imageName: '$(dockerId)/accountingapp:$(tagName)'	steps:	- script: docker build -f Dockerfile -t $(imageName) .	displayName: 'Docker build Script'	- script: |	docker login -u $(dockerId) -p $(pswd)	docker push $(imageName)	displayName: 'Push docker image'	- task: SSH@0	displayName: 'Run shell inline on remote machine'	inputs:	sshEndpoint: 'weihanli-vm'	runOptions: inline	inline: |	kubectl set image deployment/accountingapp-deployment accountingapp=$(imageName) --record=true‍

提交代码触发CI

 docker build -f Dockerfile -t weihanli/accountingapp:20190407.3 .	# 此处省略N行代码...	deployment.extensions/accountingapp-deployment image updated

查看效果

访问 示例应用[4],刷新几次可以看到类似效果。

640?wx_fmt=gif

查看 pod 信息,执行 kubectl get pod 获取 pod 信息,再使用 kubectl describe pod <podName> 获取pod的信息确认是否已经成功更新镜像

640?wx_fmt=png

Memo

希望对你有帮助,作者水平有限,如有疏漏或者错误,还望指出。

References

[1] docker容器化及自动化部署: https://www.jianshu.com/p/ce10bb128539[2]https://www.kubernetes.org.cn/docs[3] 示例应用: https://github.com/WeihanLi/AccountingApp[4] 示例应用: https://accounting.weihanli.xyz/Account/Login?ReturnUrl=%2F

640?wx_fmt=jpeg

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

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

相关文章

Fizz Buzz

题目描述 写一个程序&#xff0c;输出从 1 到 n 数字的字符串表示。 如果 n 是3的倍数&#xff0c;输出“Fizz”&#xff1b; 如果 n 是5的倍数&#xff0c;输出“Buzz”&#xff1b; 3.如果 n 同时是3和5的倍数&#xff0c;输出 “FizzBuzz”。 示例&#xff1a; n 15,返…

多项式全家桶(半)

快速傅里叶变换(FFT) 多项式表示 系数表示法&#xff1a; 一个nnn次多项式可以用n1n 1n1个系数表示出来&#xff1a;f(x)a0a1xa2x2⋯an−1xn−1anxnf(x) a_0 a_1 x a_2 x ^ 2 \dots a_{n - 1} x ^{n- 1} a_n x ^nf(x)a0​a1​xa2​x2⋯an−1​xn−1an​xn。 点值表示…

持续集成之应用容器化及自动化部署

通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署IntroAzure DevOps Pipeline 现在对于公开的项目完全免费&#xff0c;这对于开源项目来讲无疑是个巨大的好消息&#xff0c;在 Github 的 Marketplace 里有个 Azure Pipeline&#xff0c;就是微软的 Azure DevOps …

最小栈

题目描述 设计一个支持 push&#xff0c;pop&#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。 示例: MinStack minStack new …

持续集成之 Nuget 进阶

持续集成之 Nuget 进阶Intro之前介绍了一篇基于 Azure pipeline 的 nuget 包的持续集成配置&#xff0c;但是比较粗糙&#xff0c;这里介绍一下结合 Cake 实现更优雅的 nuget 包发布流程。实现目标&#xff1a;分支(除master/preview)有代码 push 或者 pr 时 自动 buildpreview…

#3771. Triple(生成函数 + 容斥)

#3771. Triple 考虑只有一个损失时&#xff0c;损失值的生成函数为A(x)A(x)A(x)。 如果不考虑无序方案&#xff0c;有两个损失的生成函数为B(x)A(x)A(x)B(x) A(x)A(x)B(x)A(x)A(x)&#xff0c;同理有三个的时候C(x)A(x)A(x)A(x)C(x) A(x)A(x)A(x)C(x)A(x)A(x)A(x)。 考虑如…

计数质数

题目描述 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解法 思路1&#xff1a;暴力法 /***暴力法* 时间复杂度O(n2)* 空间复杂度(O(1))* param n* return*/ public int countPrimes(int n) {if(n&…

做“是非题”的正确姿势

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达有时也会有感而发&#xff0c;来加个餐&#xff5e;我的第「107」篇原创敬上大家好&#xff0c;我是Z哥。这两天中国男篮的事&#xff0c;让我有感而发。不知道你有没有留意到&#xff0c;我们身边总有类似下面这样的事情…

3的幂

题目描述 给定一个整数&#xff0c;写一个函数来判断它是否是 3 的幂次方。 示例 1: 输入: 27 输出: true示例 2: 输入: 0 输出: false示例 3: 输入: 9 输出: true示例 4: 输入: 45 输出: false进阶&#xff1a; 你能不使用循环或者递归来完成本题吗&#xff1f; 解法1&a…

E. The Child and Binary Tree(生成函数 + 多项式)

E. The Child and Binary Tree 不难写出一个递推式fn∑i1ngi∑j0n−ifjfn−i−jf_n \sum\limits_{i 1} ^{n}g_i \sum\limits_{j 0} ^{n - i}f_jf_{n - i - j}fn​i1∑n​gi​j0∑n−i​fj​fn−i−j​&#xff0c;其中gig_igi​表示ccc中有没有iii这个数。 设F(x)F(x)F(x)…

依赖倒置原则(DIP)、控制反转(IoC)、依赖注入(DI)(C#)

象的控制权交由配置文件控制&#xff0c;然后根据配置文件中的信息&#xff08;程序集类型&#xff09;&#xff0c;通过反射来获取对象&#xff0c;而不是直接new对象&#xff0c;这也是控制反转的一种体现。IoC容器会连接程序中的所有模块&#xff0c;模块将所需对象的控制权…

汉明距离

题目描述 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y&#xff0c;计算它们之间的汉明距离。 注意&#xff1a; 0 ≤ x, y < 231. 示例: 输入: x 1, y 4输出: 2解释: 1 (0 0 0 1) 4 (0 1 0 0)↑ ↑上面的箭头指…

P3978 [TJOI2015]概率论(生成函数)

P3978 [TJOI2015]概率论 设fif_ifi​表示节点数为iii的二叉树有多少&#xff0c;gig_igi​表示节点数为iii的二叉树有多少叶子节点。 fn∑i0n−1fifn−1−if_n \sum\limits_{i 0} ^{n - 1}f_if_{n - 1 - i}fn​i0∑n−1​fi​fn−1−i​&#xff0c;f01f_0 1f0​1。 对于g…

四种为HttpClient添加默认请求报头的解决方案

HttpClient在Web调用中具有广泛的应用&#xff0c;而为它添加默认请求头是我们经常遇到的需求&#xff0c;本文介绍4种为HttpClient添加默认请求头的方式。直接在创建的HttpClient对象的DefaultRequestHeaders集合中添加报头。class Program{static Task Main()> SendAsync…

Java位运算

java中位运算^,&,<<,>>,<<<,>>>总结 1.^(亦或运算) &#xff0c;针对二进制&#xff0c;相同的为0&#xff0c;不同的为1 public static void main(String[] args) {System.out.println("2^3运算的结果是 :"(2^3));//打印的结果是…

#3456. 城市规划(生成函数,多项式求逆)

#3456. 城市规划 设fnf_nfn​为nnn个点的的点的简单无向连通图数目&#xff0c;gng_ngn​为nnn个点的简单无向图个数&#xff08;不要求联通&#xff09;。 对于gng_ngn​显然有gn2n(n−1)2g_n 2 ^{\frac{n(n - 1)}{2}}gn​22n(n−1)​&#xff0c;共有n(n1)2\frac{n(n 1)}…

【盛派内部分享资料】本期主题:使用JavaScript HTML CSS构建跨平台桌面应用

先上录制视频友情提示&#xff1a;如果公众号内视频无法显示高清视频&#xff0c;您也可以在小程序内观看高清视频&#xff0c;点击下方按钮观看&#xff1a;【盛派内部分享资料】本期主题&#xff1a;使用JavaScript HTML CSS构建跨平台桌面应用本次活动由盛派技术人员伏允坤主…

负载均衡及负载均衡器

负载均衡在分布式系统中&#xff0c;负载均衡&#xff08;load balancing&#xff09;是一种有效的将网络请求分配到多个服务器的过程。通过将负载进行负载均衡&#xff0c;可以有效地改进系统响应时间&#xff0c;提高系统的可用性。随着系统变的愈发复杂&#xff0c;用户增多…

Sequence II (HDU 5919)(主席树)

Sequence II 题目大意是有mmm次询问&#xff0c;每次询问一段区间[l,r][l, r][l,r]&#xff0c;从左到右&#xff0c;如果这个数是在这个区间第一次出现&#xff0c;则记录下其下标&#xff0c; 我们会得到一个新的数组&#xff0c;要求这个数组的中位数是什么。 考虑使用主…

VS Code 摸鱼插件开发小记

插件地址&#xff1a;https://marketplace.visualstudio.com/items?itemNamebugbreeder.vscode-readhub原文链接&#xff1a;https://github.com/alex-yh99/vscode-readhub/blob/master/docs/develop-note.md一、关于插件在 VSCode 中快捷查阅科技动态、开发者资讯等 Readhub …