k8s 核心功能 - 每天5分钟玩转 Docker 容器技术(116)
本节带领大家快速体验 k8s 的核心功能:应用部署、访问、Scale Up/Down 以及滚动更新。
部署应用
执行命令:
kubectl run kubernetes-bootcamp \
--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \
--port=8080
这里我们通过 kubectl run 部署了一个应用,命名为 kubernetes-bootcamp。
Docker 镜像通过 --image 指定。
--port 设置应用对外服务的端口。

这里 deployment 是 Kubernetes 的术语,可以理解为应用。
Kubernetes 还有一个重要术语 Pod。
Pod 是容器的集合,通常会将紧密相关的一组容器放到一个 Pod 中,同一个 Pod 中的所有容器共享 IP 地址和 Port 空间,也就是说它们在一个 network namespace 中。
Pod 是 Kubernetes 调度的最小单位,同一 Pod 中的容器始终被一起调度。
运行 kubectl get pods 查看当前的 Pod。

kubernetes-bootcamp-390780338-q9p1t 就是应用的 Pod。
访问应用
默认情况下,所有 Pod 只能在集群内部访问。对于上面这个例子,要访问应用只能直接访问容器的 8080 端口。为了能够从外部访问应用,我们需要将容器的 8080 端口映射到节点的端口。
执行如下命令:
kubectl expose deployment/kubernetes-bootcamp \
--type="NodePort" \
--port 8080

执行命令 kubectl get services 可以查看应用被映射到节点的哪个端口。

这里有两个 service,可以将 service 暂时理解为端口映射,后面我们会详细讨论。
kubernetes 是默认的 service,暂时不用考虑。kubernetes-bootcamp 是我们应用的 service,8080 端口已经映射到 host01 的 32320 端口,端口号是随机分配的,可以执行如下命令访问应用:
curl host01:32320

Scale 应用
默认情况下应用只会运行一个副本,可以通过 kubectl get deployments查看副本数。

执行如下命令将副本数增加到 3 个:
kubectl scale deployments/kubernetes-bootcamp --replicas=3

通过 kubectl get pods 也可以看到当前 Pod 也增加到 3 个。

通过 curl 访问应用,可以看到每次请求发送到不同的 Pod,三个副本轮询处理,这样就实现了负载均衡。

要 scale down 也很方便,执行命令:
kubectl scale deployments/kubernetes-bootcamp --replicas=2

其中一个副本被删除了。
滚动更新
当前应用使用的 image 版本为 v1,执行如下命令将其升级到 v2:
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

通过 kubectl get pods 可以观察滚动更新的过程:v1 的 Pod 被逐个删除,同时启动了新的 v2 Pod。更新完成后访问新版本应用。

如果要回退到 v1 版本也很容易,执行 kubectl rollout undo 命令:
kubectl rollout undo deployments/kubernetes-bootcamp

验证版本已经回退到 v1。

至此,我们已经通过官网的交互式教程快速体验了 Kubernetes 的功能和使用方法。教程其余章节将详细讨论 Kubernetes 的架构、典型的部署方法、容器编排能力、网络方案、监控方案,帮助大家全面掌握 Kubernetes 的核心技能。
书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

k8s 核心功能 - 每天5分钟玩转 Docker 容器技术(116)的更多相关文章
- 5 秒创建 k8s 集群 - 每天5分钟玩转 Docker 容器技术(115)
		
据说 Google 的数据中心里运行着超过 20 亿个容器,而且 Google 十年前就开始使用容器技术. 最初,Google 开发了一个叫 Borg 的系统(现在命令为 Omega)来调度如此庞大数 ...
 - k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)
		
在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石. Cluster Cluster 是计算.存储和网络资源的集合,Kubernetes 利用这 ...
 - 用 k8s 管理机密信息 - 每天5分钟玩转 Docker 容器技术(155)
		
应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以密文的方式存储 ...
 - 部署 k8s Cluster(上)- 每天5分钟玩转 Docker 容器技术(118)
		
我们将部署三个节点的 Kubernetes Cluster. k8s-master 是 Master,k8s-node1 和 k8s-node2 是 Node. 所有节点的操作系统均为 Ubuntu ...
 - 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
		
为了帮助大家更好地理解 Kubernetes 架构,我们部署一个应用来演示各个组件之间是如何协作的. 执行命令 kubectl run httpd-app --image=httpd --replic ...
 - 部署 k8s Cluster(下)- 每天5分钟玩转 Docker 容器技术(119)
		
上节我们通过 kubeadm 在 k8s-master 上部署了 Kubernetes,本节安装 Pod 网络并添加 k8s-node1 和 k8s-node2,完成集群部署. 安装 Pod 网络 要 ...
 - k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)
		
命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectl run nginx-deployment --image=nginx ...
 - k8s 如何 Failover?- 每天5分钟玩转 Docker 容器技术(127)
		
上一节我们有 3 个 nginx 副本分别运行在 k8s-node1 和 k8s-node2 上.现在模拟 k8s-node2 故障,关闭该节点. 等待一段时间,Kubernetes 会检查到 k8s ...
 - 用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132)
		
容器按照持续运行的时间可分为两类:服务类容器和工作类容器. 服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等.工作类容器则是一次性任务,比如批处理程序,完成后容 ...
 
随机推荐
- 一个在 .NET 一线战斗了十年的 C# 程序员的内心独白
			
这是我的一个内心独白,内容有点长,希望你能耐心地看完. 估计看到标题,大部分人都会说:哇!大牛!膜拜--之类的.至于是不是大牛,那我不知道,毕竟我依然有很多地方不懂,特别是现在已经流行的 Redis ...
 - YiShop_做个网上商城系统多少钱
			
随着国内电商的兴起,不少企业和个人卖家都已经意识到电商的重要性,于是就开始搭建自己网上商城,但是还是有很多人对网上商城还不是很了解,今天就由YiShop小编跟大家讲解网上商城系统的一些知识一.网上商城 ...
 - winform在鼠标操作时要判断是否按下Ctrl键
			
(Control.ModifierKeys & Keys.Control) == Keys.Control
 - node.js之express框架入门篇
			
一.express框架简介 express框架是后台的Node框架,在后台的受欢迎的程度,和jQuery一样 英语官网:http://expressjs.com/ 中文官网:http://www.ex ...
 - weex加入iconfont
			
weex加入图标可能是项目开发中最头疼的事情了,还好有 阿里巴巴矢量图标库解决了开发时的图标问题,下面我们一起来踩坑吧<text class="left"></ ...
 - 如何在你的blog中添加炫酷的飘雪动画效果
			
将下面的代码复制到你的设置栏下页眉html代码框中即可 <script> (function($){$.fn.snow=function(options){,maxSize:,newOn: ...
 - C#复习资料
			
C#期末考试复习题 一.单项选择题(每小题2分,共20分) 1.在类作用域中能够通过直接使用该类的( )成员名进行访问. A. 私有 B. 公用 C. 保护 D. 任 ...
 - 用HTML5实现的各种排序算法的动画比較
			
用HTML5实现的各种排序算法的动画比較 非常有意思,详见: http://www.webhek.com/misc/comparison-sort/
 - duilib 快捷键发送消息
			
全局快捷键设置类,文章最以下,有3种不同的使用方法(假设设置的快捷键,与其它软件的快捷键同样.那么仅仅有你的程序起作用.你释放后它才干够使用) .h文件 #pragma once class CHot ...
 - 将CSS放头部,JS放底部,可以提高页面的性能的原因
			
css不阻止dom的解析 js阻止dom的解析 css js都会阻止dom的渲染 原因: js有可能影响dom的解析,比如在js里面新增dom等这些操作 css不能影响dom的解析 而 dom的渲染 ...