运行应用-使用Deployment运行无状态应用程序
以下介绍如何使用kubernetes的deployment对象运行应用程序。
目标
- 创建nginx deployment。
- 使用kubectl列出有关部署的信息。
- 更新部署
创建和探索nginx部署
可以通过创建kubernetes部署对象来运行应用程序,还可以在yaml文件中描述部署。例如,这个yaml文件描述了运行nginx:1.7.9 docker映像的部署:
application/deployment.yaml
apiVersion: apps/v1 # for versions before 1.9. use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: # tells deployment to run pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.
ports:
- containerPort:
注意:
selector字段定义Deployment如何查找要管理的pod。
在本例中,只需选择Pod模板中定义的标签(app:nginx)。然而,只要Pod模板本身满足规则,就可能有更复杂的选择规则。
1. 基于YAML文件创建deployment
kubectl apply -f application/deployment.yaml
2. 显示有关部署的信息:
kubectl describe deployment nginx-deployment
输出类似于:
user@computer:~/website$ kubectl describe deployment nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Tue, Aug :: -
Labels: app=nginx
Annotations: deployment.kubernetes.io/revision=
Selector: app=nginx
Replicas: desired | updated | total | available | unavailable
StrategyType: RollingUpdate
MinReadySeconds:
RollingUpdateStrategy: max unavailable, max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:1.7.
Port: /TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment- (/ replicas created)
No events.
3. 列出demployment创建的Pods:
kubectl get pods -l app=nginx
输出类似于:
NAME READY STATUS RESTARTS AGE
nginx-deployment--7o5ns / Running 16h
nginx-deployment--r18az / Running 16h
4. 显示Pod信息:
kubectl describe pod <pod-name>
<pod-name>是具体Pod的名称
更新Deployment
你可以通过应用新的yaml文件来更新部署。以下YAML文件将nginx更新到nginx 1.8
application/deployment-update.yaml
apiVersion: apps/v1 # for versions before 1.9. use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas:
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.8 # Update the version of nginx from 1.7. to 1.8
ports:
- containerPort:
1. 应用新的yaml文件:
kubectl apply -f application/deployment-update.yaml
2. 查看使用新名称创建的Pods并删除Pods:
kubectl get pods -l app=nginx
通过增加副本计数来扩展应用程序
你可以通过应用新的yaml文件来增加部署中的Pod数量。此YAML文件将replicas设置为4,指定部署应具有四个pod:
application/deployment-scale.yaml
apiVersion: apps/v1 # for versions before 1.9. use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: # Update the replicas from to
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.8
ports:
- containerPort:
1. 应用新的yaml文件:
kubectl apply -f application/deployment-scale.yaml
2. 验证部署是否有四个Pod:
kubectl get pods -l app=nginx
输出类似于:
NAME READY STATUS RESTARTS AGE
nginx-deployment--4zdqq / Running 25s
nginx-deployment--6zgi1 / Running 25s
nginx-deployment--fxcez / Running 2m
nginx-deployment--rwovn / Running 2m
删除Deployment
通过Deployment的名称删除Deployment
kubectl delete deployment nginx-deployment
运行应用-使用Deployment运行无状态应用程序的更多相关文章
- ServiceFabric极简文档-5.0 Service Fabric有状态与无状态
Service Fabric 应用程序方案 2017/08/14 作者 Edward Chen Jack Zeng Azure Service Fabric提供了一个可靠而灵活的平台,可用于编写和运行 ...
- Kubernetes Deployment(部署无状态应用)
Kubernetes Deployment(部署无状态应用) Pod与controllers的关系 • controllers:在集群上管理和运行容器的对象 • 通过label-selector相关联 ...
- Kubernetes 有状态与无状态介绍
Kubernetes 有状态与无状态介绍 无状态:deployment - 认为所有pod都是一样的,不具备与其他实例有不同的关系. - 没有顺序的要求. - 不用考虑再哪个Node运行. - 随意扩 ...
- K8s无状态控制器原理介绍
Pod控制器: ReplicationController:早期K8s只有这一个控制器,但后来发现让这一个来完成所有任务,太复杂.因此被废弃. ReplicaSet: 它用于帮助用户创建指定数量的Po ...
- kubernetes的无状态服务和有状态服务介绍
无状态服务 1)是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的 2)多个实例可以共享相同的持久化数据.例如: nginx实例和tomcat实例 3 ...
- C#-WebForm-WebForm开发基础、如何给控件注册事件?——事件委托写法、http无状态性、三层结构
(小知识 - xml:可扩展的标记语言 html:超文本标记语言) 一.创建WebForm:新建→网站 此时文件夹中只有一个 config 文件,打开后 二.在项目下右键添加新项 在设计页面中打开 从 ...
- 对于REST中无状态(stateless)的一点认识
今天早上在Yahoo的邮件列表里看到一篇颇有意思的讨论,标题为RESTful vs. unRESTful: Session IDs and Authentication(51CTO编者注:意为REST ...
- EJB开发第一个无状态会话bean、开发EJBclient
开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与client交互,是编写业务逻辑的地方.在会话bean中能够通过JDBC直接操作数据库.但大多数 ...
- JBoss+Ant实现EJB无状态会话bean实例
EJB分为session bean.entity bean.message-driven bean,session bean又分为无状态会话bean和有状态会话bean. session bean负责 ...
随机推荐
- PAT 乙级 1009.说反话 C++/Java
1009 说反话 (20 分) 题目来源 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词 ...
- 图论篇3——最短路径 Dijkstra算法、Floyd算法
最短路径 问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个: 从某城市到其余所有城市的最短距离[单源最短路径] 所有城市之间相互的最短距离 ...
- yum下载Zabbix4.0失败的解决方法
根据官网说明配置的yum源,今天用yum下载Zabbix时莫名的报错,经过几番折腾,找到了解决方法. 一.报错如下: 二. 解决方法: [root@VM_0_6_centos ~]# cat /etc ...
- 使用python处理selenium中的获取元素属性
# 获取我的订单元素class属性值 get_class_name = driver.find_element_by_link_text('我的订单').get_attribute('class') ...
- 项目Beta冲刺--2/7
项目Beta冲刺--2/7 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Beta冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及 ...
- 织梦DedeCms网站内部SEO详细分析
一.确定网站的目标关键词 最为重要的一方面,一般网站首页的目标关键词建议在1-3个.对于目标关键词的选取有几个建议 1.定位:网站的内容和业务相关 2.分析:对用户体验及竞争对手的网站进行分析 3.筛 ...
- 关于defer.promise.then 异步的一个疑问 | 用柯里化做promise | 用递归做promise
疑问:感觉会报错,因为执行到defer.promise.then这时候还没到defer.resolve,因为异步读文件,总归会慢 解答:先执行defer.promise.then,是给callback ...
- 在Xshell 运行angular 项目时,找不到node-sass模块,安装node-sass模块时,又出现权限问题
情景再现: 运行时的报错找不到node-sass模块 接着安装node-sass模块出现权限问题 解决方法:既然是权限问题,那么就给项目添加权限指令,在npm前面添加# sudo ,命令如下: 这样就 ...
- yugabyte 安装pg extention
前段时间在学习yugabyte 发现yugabyte 是直接复用了pg server的源码,所以当时就觉得大部分pg extension 也是可用. 今天看到了官方文档中有关于如何安装的,发现还得多看 ...
- Using the Repository and Unit Of Work Pattern in .net core
A typical software application will invariably need to access some kind of data store in order to ca ...