Kubernetes Deployment(部署无状态应用)
Kubernetes Deployment(部署无状态应用)
Pod与controllers的关系
• controllers:在集群上管理和运行容器的对象
• 通过label-selector相关联
• Pod通过控制器实现应用的运维,如伸缩,升级等
Deployment
• 部署无状态应用
• 管理Pod和ReplicaSet(副本控制、更新回滚)
• 具有上线部署、副本设定、滚动升级、回滚等功能
• 提供声明式更新,例如只更新一个新的Image
应用场景:Web服务

案例
1、创建deployment
vim tomcat-deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
labels:
app: tomcat
name: tomcat
spec:
replicas: 3
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
imagePullSecrets:
- name: registry-pull-secret
containers:
- image: tomcat
imagePullPolicy: Always
name: tomcat
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-service
labels:
app: tomcat
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
selector:
app: tomcat
2、创建deployment
kubectl apply -f tomcat-deployment.yaml
3、创建一个deployment后查看结果:kubectl get pods,deploy,rs
- 对用户有一个隐藏的控制器 replicaset
- deploymen是用来管理 replicaset 与 pod
kubectl get pod,deploy,rs
NAME READY STATUS RESTARTS AGE
pod/tomcat-b7cf876c5-6fqq2 1/1 Running 0 117s
pod/tomcat-b7cf876c5-p94cx 1/1 Running 0 118s
pod/tomcat-b7cf876c5-znd2r 1/1 Running 0 117s NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.extensions/tomcat 3 3 3 3 118s NAME DESIRED CURRENT READY AGE
# 隐藏控制器,控制pod副本数 replicaset.extensions/tomcat-b7cf876c5 3 3 3 118s
4、查看deployment所有涉及字段
kubectl edit deployment/tomcat
------------------------------------------------
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: ""
kubectl.kubernetes.io/last-applied-configuration: |
creationTimestamp: 2019-08-27T02:09:45Z
generation: 1
labels:
app: tomcat
name: tomcat
namespace: default
resourceVersion: ""
selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/tomcat
uid: bd75f48e-c86f-11e9-9db0-000c292e28d6
spec:
progressDeadlineSeconds: 600
# 副本设定
replicas: 3
revisionHistoryLimit: 2
# 标签管理
selector:
matchLabels:
app: tomcat
# 滚动更新
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: tomcat
spec:
# 容器定义
containers:
- image: tomcat
imagePullPolicy: Always
name: tomcat
ports:
- containerPort: 8080
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: registry-pull-secret
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 3
conditions:
- lastTransitionTime: 2019-08-27T02:11:23Z
lastUpdateTime: 2019-08-27T02:11:23Z
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: 2019-08-27T02:09:45Z
lastUpdateTime: 2019-08-27T02:11:23Z
message: ReplicaSet "tomcat-b7cf876c5" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 3
replicas: 3
updatedReplicas: 3
------------------------------------------------
Kubernetes Deployment(部署无状态应用)的更多相关文章
- 运行应用-使用Deployment运行无状态应用程序
以下介绍如何使用kubernetes的deployment对象运行应用程序. 目标 - 创建nginx deployment. - 使用kubectl列出有关部署的信息. - 更新部署 创建和探索ng ...
- Kubernetes如何支持有状态服务的部署?
作者:Jack47 转载请保留作者和原文出处 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. Kubernetes对无状态服务有完善的支持 ...
- Kubernetes 有状态与无状态介绍
Kubernetes 有状态与无状态介绍 无状态:deployment - 认为所有pod都是一样的,不具备与其他实例有不同的关系. - 没有顺序的要求. - 不用考虑再哪个Node运行. - 随意扩 ...
- Kubernetes SatefulSet(有状态应用部署)
Kubernetes SatefulSet(有状态应用部署) • 部署有状态应用• 解决Pod独立生命周期,保持Pod启动顺序和唯一性1. 稳定,唯一的网络标识符,持久存储2. 有序,优雅的部署和扩展 ...
- Kubernetes中Deployment部署故障排除
Kubernetes中Deployment部署故障排除 字符型思维导图 排查pod状态(带标签):kubectl get pods,是否有等待处理的pod? 是?kubectl describe po ...
- kubernetes的无状态服务和有状态服务介绍
无状态服务 1)是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的 2)多个实例可以共享相同的持久化数据.例如: nginx实例和tomcat实例 3 ...
- 还在因为部署 Kubernetes 时,无法拉取 k8s.gcr.io/*** 镜像而头疼吗
拉取外网 Kubernetes 镜像 还在因为部署 Kubernetes 时,无法拉取 k8s.gcr.io/*** 镜像而头疼吗? 传送门 https://github.com/liamhao/pu ...
- StatefulSet: Kubernetes 中对有状态应用的运行和伸缩
在最新发布的 Kubernetes 1.5 我们将过去的 PetSet 功能升级到了 Beta 版本,并重新命名为StatefulSet.除了依照社区民意改了名字之外,这一 API 对象并没有太大变化 ...
- Kubernetes 应用部署实战
Kubernetes 应用部署实战 2018-08-08 19:44:56 wuxiangping2017 阅读数 3084 收藏 更多 分类专栏: linux运维与架构师 简介 伙计们,请搬好 ...
随机推荐
- MySQL GROUP BY 的问题
拿 employee 示例数据库为例,当进行如下操作时会报错. mysql> SELECT * FROM employees GROUP BY gender; ERROR 1055 (42000 ...
- 学习Python前言
先介绍下自己: 我是小芒果,在一家互联网公司上班 目前担任的是测试工程师职 自工作开始至今,已经3年之载 一路过来倒也轻松 期间学过几次python没一次能坚持下来 随着行业的饱和 测试技术的要求 以 ...
- 用Python复制文件的9个方法
Python 中有许多"开盖即食"的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作.在这篇文章中,你将会看到一些用 Python 实现文件复制的 ...
- HTML中html元素的lang属性的说明
HTML中html元素的lang属性的说明 我在刚开始学习HTML的时候,关于基本的HTML格式中有一点不明白的地方,基本格式如下 <!DOCTYPE html> <html lan ...
- WKWebView使用遇到的坑--加载本地html及JS交互
1. ios9以前版本读取本地HTML的问题 当使用loadRequest来读取本地的HTML时,WKWebView是无法读取成功的,后台会出现如下的提示:Could not create a san ...
- Android Toolbar中的title居中问题
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/167 Android Toolbar中的title居中问题 ...
- element-ui修改表单自带验证的样式
1.比如重写在表单自带验证的样式 .el-form-item__error是对应是的文字的类名,图标我是通过伪元素插进去的 下面是伪元素代码 基本上要重写样式的,到控制台看样式名,因为是封装的,所以有 ...
- Mysql 连接提示 Client does not support authentication protocol requested by server 客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端
由于查阅了很多百度文档发现很多方法比较复杂,所以写个备忘: 首先,进入MySQL 8.0Command Line Client -Unicode,输入密码,登录进去. 然后,在命令行输入:ALTER ...
- linux修改权限
修改system目录(包括子目录)的所有者和组 sudo chown -R seven:seven system
- openpyxl的简单使用
openpyxl的简单使用 openpyxl 操作excel的库,只能操作xlxs 文件, xlrd/xlwt这两个库能兼容xls(2003版) 安装 pip install openpyxl如果ex ...