k8s分享之——Deployment的管理与使用
  

不懂就问 3492

{{ttag.title}}
一、前言
上一个帖子和大家分享了k8s的一些基本概念,了解到k8s可以用来进行容器编排、管理与调度,今天就和大家分享一下,k8s如何实现基本的容器管理。
本文主要包含以下内容:
  • k8s的管理对象
  • 创建Deployment的两种方式


二、k8s的管理对象
我们一直在说k8s可以管理容器,但是实际上k8s不是直接管理容器的,而是通过管理其他的对象来实现对容器的管理与编排。
管理对象(Pod):
  • Kubernetes基本管理单元,每个Pod是一个或多个容器的一组集合。
  • 一个Pod作为一个整体运行在一个节点(node)上。
  • Pod内的容器共享存储和网络。




管理对象(RC:ReplicationController)
  • Kubernetes需要管理大量的Pod,通常情况下一个应用不会以单独的一个Pod完成。比较常见的情况是使用大量的Pod组成一个简单应用。管理这些大量的Pod的一个方式就是RC。
  • RC可以指定Pod的副本数量,并且在其中有Pod故障时可以自动拉起新的Pod,大大简化了管理难度。


管理对象(RS:Replica Set)
  • ReplicaSet是新一代的RC,主要功能和RC一样,维持Pod的数量稳定,指定Pod的运行位置等,使用方法也相似,主要区别是更新了api,支持更多功能。
  • ReplicaSet不建议直接使用,而是用更上层的概念Deployment调用ReplicaSet。


管理对象(Deployment)
  • 目前最常用的控制器就是Deployment,创建Deployment时会自动创建ReplicaSet。
  • Deployment可以管理一个或多个RS,并且通过RS来管理Pod。


管理逻辑:容器<Pod<ReplicaSet<Deployment

以一个业务来看:
  • Pod中包含一个容器,或关系特别紧密的几个容器。
  • 一个ReplicaSet中包含多个相同的Pod。
  • Deployment中包含一个或几个不同的RS


三、创建Deployment
方式一:通过kubectl命令创建,通过其命令可以管理Deployment,Replicaset,ReplicationController,Pod等,进行新建、扩容、删除、升级等等全生命周期操作。
例:
  1. 创建一个简单的Deployment:kubectl create deployment dep-nginx  --image=nginx
复制代码
kubectl语法:
  1. kubectl [command] [TYPE] [NAME] [flags]
复制代码
Command:常见生命周期管理,如create(创建资源),get(查看资源),describe(查看资源详细描述),delete(删除资源),apply(使资源的配置变更生效,可以代替create创建新的资源)等。
TYPE:指定操作对象的类型,如deployment,RS,Pod等
NAME:指定对象的名字
Flags: 可选的标志位

方式二:利用yaml文件创建
方式一中,我们使用一行命令创建了Deployment。这种方式过于简单,无法自定义大量个性化参数,并且后续对该Deployment的升级管理也有诸多问题。在实际使用中,我们更常见的用法是通过一个yaml文件来创建各类资源。
例:
  1. 新建一个yaml文件:vi nginx-deployment.yaml
复制代码
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.    name: nginx-deployment
  5.    labels:
  6.       app: nginx
  7. spec:
  8.   replicas: 3
  9.   selector:
  10.      matchLabels:
  11.           app: nginx
  12.   template:
  13.      metadata:
  14.          labels:
  15.             app: nginx
  16.      spec:
  17.          containers:
  18.          - name: nginx
  19.          image: nginx:1.7.9
  20.          ports:
  21.          - containerPort: 80
复制代码
  1. 利用yaml文件创建deployment:kubectl create -f nginx-deployment.yaml
复制代码
yaml文件格式还是有些复杂的,这里就先不展开详细介绍,简单描述下每一个参数的作用。
  • apiVersion:版本号,固定为apps/v1,如果使用1.9.0以前版本的kubernetes,填写apps/v1beta2
  • Kind: 类型,选择创建资源类型,可以填写pod,replicaset等
  • Metadata:元数据,其中name项指定了名称,label项指定标签。
  • Spec:deployment规格,其中replicas指定pod副本数量,选择器选择标签匹配为app:nginx
  • Template:对pod模板的定义,其中至少要定义一个label
  • Spec:描述pod的规格
  • Containers:定义容器的属性,在范例中,容器名字是nginx,镜像为nginx:1.7.9,容器输入输出的端口是80端口。


最后和大家分享一个yaml在线格式校验工具,可以检查格式等错误。
  1. https://www.bejson.com/validators/yaml/
复制代码

打赏鼓励作者,期待更多好文!

打赏
4人已打赏

一个无趣的人 发表于 2020-5-6 21:42
  
多谢楼主分享K8S的内容,但是这个有点看不懂了。
新手741261 发表于 2020-5-9 10:22
  
感谢分享
virtualcloud 发表于 2020-5-13 08:37
  
支持原创。
zqm 发表于 2020-5-13 16:33
  
这个有点看不懂了,单是那个插入代码地方从哪搞出来的
逆天而行 发表于 2020-5-14 13:20
  
建议把管理的操作场景说明下
新手589624 发表于 2020-5-21 11:14
  
对象逻辑管理
新手727241 发表于 2020-5-24 16:20
  
感谢分享
SANGFOR_45083 发表于 2020-5-31 23:07
  
建议先介绍下容器是什么,k8s是什么
Running_Monkey 发表于 2020-6-3 15:31
  
有点深奥,看得不是很懂
发表新帖
热门标签
全部标签>
安全效果
每日一问
西北区每日一问
技术盲盒
【 社区to talk】
干货满满
技术笔记
产品连连看
新版本体验
技术咨询
标准化排查
信服课堂视频
每周精选
功能体验
自助服务平台操作指引
排障那些事
GIF动图学习
技术晨报
安装部署配置
运维工具
解决方案
2023技术争霸赛专题
秒懂零信任
故障笔记
技术圆桌
云计算知识
用户认证
技术顾问
资源访问
存储
「智能机器人」
社区新周刊
畅聊IT
答题自测
专家问答
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
原创分享
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
地址转换
虚拟机
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
通用技术
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
高手请过招
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人