Kubernets的资源管理
Kubernets的资源管理
- 资源
- yaml
- namespace
- Pod
- Label
- deployment
- service
- 数据存储
- EmptyDir
- HostPath
- NFS
- PV
资源
学习kubernets的核心,就是学习如何对集群中的Pod
、Pod控制器
、Service
、存储
等各种资源进行操作。
kubectl api-resources
级别 | 资源名称 | 缩写 | 资源作用 |
---|---|---|---|
集群 | nodes | no | 集群组成部分 |
namespaces | ns | 隔离pod | |
pod资源 | pods | po | 装载容器 |
pod资源控制器 | replication controllers | rc | 控制pod资源 |
replicasets | rs | 控制pod资源 | |
deployments | deploy | 控制pod资源 | |
daemonsets | ds | 控制pod资源 | |
jobs | 控制pod资源 | ||
cronjobs | cj | 控制pod资源 | |
horizontal pod auto saclers | hpa | 控制pod资源 | |
statefulsets | sts | 控制pod资源 | |
服务发现 | services | svc | 统一pod对外接口 |
ingress | ing | 统一pod对外接口 | |
存储资源 | volume attachments | 存储 | |
persistent volumes | pv | 存储 | |
persistent volume claims | pvc | 存储 | |
配置资源 | config maps | cm | 配置 |
secrets | 配置 | ||
yaml
1 使用kubectl create命令生成yaml文件kubectl create deployment nginx --image=nginx:1.17.1 --dry-run=client -n dev -o yaml
kubectl create deployment nginx --image=nginx:1.17.1 --dry-run=client -n dev -o yaml > test.yaml
#此种方式适用于没有真正部署资源 --------
2 使用kubectl get命令导出yaml文件
kubectl get deployment nginx -n dev -o yaml --export > test2.yaml
namespace
- Namespace是kubernetes系统中一种非常重要的资源,它的主要作用是用来实现
多套系统的资源隔离
或者多租户的资源隔离
。
kubectl get namespace
kubectl get ns
kubectl get ns default -o wide
kubectl get ns default -o json
kubectl get ns default -o yaml
kubectl describe namespace default
kubectl create namespace dev
kubectl create ns dev
kubectl delete ns dev
kubectl create -f ns-dev.yaml
kubectl delete -f ns-dev.yaml
Pod
Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。
Pod可以认为是容器的封装,一个Pod中可以存在一个或多个容器。
kubectl get pods -n kube-system
kubectl run (Pod的名称) [参数]# --image 指定Pod的镜像# --port 指定端口# --namespace 指定namespace
kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace=dev
kubectl get pods -n dev
kubectl describe pod nginx -n dev
kubectl get pods -n dev -o wide
kubectl delete pod nginx -n dev
Label
Label是kubernetes的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。
Label的特点:
- 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等。
- 一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去。
- Label通常在资源对象定义时确定,当然也可以在对象创建后动态的添加或删除。
可以通过Label实现资源的多纬度分组,以便灵活、方便地进行资源分配、调度、配置和部署等管理工作。
一些常用的Label标签示例如下:
版本标签:“version”:”release”,”version”:”stable”。。。
环境标签:“environment”:”dev”,“environment”:”test”,“environment”:”pro”。。。
架构标签:“tier”:”frontend”,”tier”:”backend”。。。
kubectl label pod xxx key=value [-n 命名空间]
kubectl label pod nginx version=1.0 -n dev
kubectl label pod xxx key=value [-n 命名空间] --overwrite
kubectl label pod nginx version=2.0 -n dev --overwrite
kubectl get pod xxx [-n 命名空间] --show-labels
kubectl get pod nginx -n dev --show-labels
kubectl get pod -l key=value [-n 命名空间] --show-labels
kubectl get pod -l version=2.0 -n dev --show-labels
kubectl label pod xxx key- [-n 命名空间]
kubectl label pod nginx version- -n dev
kubectl create -f pod-nginx.yaml
kubectl delete -f pod-nginx.yaml
deployment
● 在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。
● Pod控制器用于Pod的管理,确保Pod资源符合预期的状态,当Pod的资源出现故障的时候,会尝试进行重启或重建Pod。
● 在kubernetes中Pod控制器的种类有很多,本章节只介绍一种:Deploymentkubectl create deployment xxx [-n 命名空间]
kubectl create deployment nginx --image=nginx:1.17.1 -n testkubectl scale deployment xxx [--replicas=正整数] [-n 命名空间]
kubectl scale deployment nginx --replicas=4 -n devkubectl create -f deploy-nginx.yaml
kubectl delete -f deploy-nginx.yaml
kubectl get pods -n dev
kubectl get deployment [-n 命名空间]
kubectl get deployment -n dev
service
- Service可以看做是一组同类的Pod对外的访问接口,借助Service,应用可以方便的实现服务发现和负载均衡。
kubectl expose deployment xxx --name=服务名 --type=ClusterIP --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空间]
# 会产生一个CLUSTER-IP,这个就是service的IP,在Service的生命周期内,这个地址是不会变化的
kubectl expose deployment nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n test
kubectl get service [-n 命名空间] [-o wide]
kubectl get service -n test# 创建集群外部可访问的Servicekubectl expose deployment xxx --name=服务名 --type=NodePort --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空间]
# 会产生一个外部也可以访问的Service
kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n testkubectl get service [-n 命名空间] [-o wide]
kubectl get service -n test
kubectl delete service xxx [-n 命名空间]
kubectl delete service svc-nginx1 -n testkubectl create -f svc-nginx.yaml
kubectl delete -f svc-nginx.yaml
数据存储
kubernetes的Volume支持多种类型,比较常见的有下面的几个:
- 简单存储:EmptyDir、HostPath、NFS。
- 高级存储:PV、PVC。
- 配置存储:ConfigMap、Secret。
EmptyDir
EmptyDir是最基础的Volume类型,一个EmptyDir就是Host上的一个空目录。
EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时,EmptyDir中的数据也会被永久删除。
EmptyDir的用途如下:
- 临时空间,例如用于某些应用程序运行时所需的临时目录,且无须永久保留。
- 一个容器需要从另一个容器中获取数据的目录(多容器共享目录)。
接下来,通过一个容器之间的共享案例来使用描述一个EmptyDir。
在一个Pod中准备两个容器nginx和busybox,然后声明一个volume分别挂载到两个容器的目录中,然后nginx容器负责向volume中写日志,busybox中通过命令将日志内容读到控制台。
HostPath
- HostPath就是将Node主机中的一个实际目录挂载到Pod中,以供容器使用,这样的设计就可以保证Pod销毁了,但是数据依旧可以保存在Node主机上。
NFS
PV
PV(Persistent Volume)是持久化卷的意思,是对底层的共享存储的一种抽象。一般情况下PV由kubernetes管理员进行创建和配置,它和底层具体的共享存储技术有关,并通过插件完成和共享存储的对接。
PVC(Persistent Volume Claim)是持久化卷声明的意思,是用户对于存储需求的一种声明。换言之,PVC其实就是用户向kubernetes系统发出的一种资源需求申请。
使用了PV和PVC之后,工作可以得到进一步的提升:
- 存储:存储工程师维护。
- PV:kubernetes管理员维护。
- PVC:kubernetes用户维护。
Kubernets的资源管理相关推荐
- 详解Pod和容器资源管理和分配(CPU和内存分配,临时存储管理)
1 缘起 使用任何软件都绕不过去的问题:硬件资源分配(CPU和内存), 只有可以控制资源的分配,才能保证资源高效利用. K8S做到了, 使用K8S部署服务,可以为Pod指定CPU和内存的使用, 保证集 ...
- Rancher k8s 资源管理
cgroup 简介 控制群组 (control group)(简称cgroup) 是 Linux kernel 的一项功能.从使用的角度看,cgroup 是一个目录树结构,目录中可以创建多层子目录,这 ...
- 【C++】拷贝控制与资源管理
1. 拷贝控制与资源管理 管理类外资源的类必须定义拷贝控制成员.如P447中所见,这种类需要通过析构函数来释放对象所分配的资源.一旦一个类需要析构函数,那么几乎可确定它也需要一个拷贝构造函数和一个拷贝 ...
- 计算机在人力资源管理中的应用论文,计算机人事管理论文
计算机人事管理论文 1.计算机在人事管理中的应用 目前,计算机已广泛应用于劳资管理.人事档案管理等方面,大大减轻了员工的负担,并且很大程度地提高了人事管理工作的效率,使人事管理工作更加科学化.系统化. ...
- LomoX 桌面UI框架更新,增加资源管理
修改: 1.增加lxoption工具类,提供启动的兼容,兼容旧版的,并支持注册资源启动 (蔡东赟) 兼容启动项目: main.lx //资源包默认现在用 qrc:/pack/main.html 后面评 ...
- “解决方案资源管理器”中不能自动选择正在编辑的文档
本来正在编辑的文档应该在"解决方案资源管理器"中自动选中的,但是我的VS2005机器好像没有这个功能,后来发现 "工具->选贤"里边的"项目和解 ...
- 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门
1.1 环境 Visual Studio + GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Me ...
- OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- 初一下计算机课教案,川教版信息技术七下第1课《计算机资源管理》word教案1
川教版信息技术七下第1课<计算机资源管理>word教案1 第一课 计算机资源管理 教学目标 (1)了解计算机中的资源. (2)了解"我的电脑"."资源管理器& ...
- Webpack 资源管理
资源管理 提示: 版本问题 本文基于 webpack 2.x 版本.webpack 2.x 相比 webpack 1.x 有重大改变.所以,如果你的项目中已使用了 webpack 1.x ,本教程的示 ...
最新文章
- 中国程序员人数将增长50%,过半500强都要卖软件,边缘应用程序增长8倍丨IDC预测下一个五年...
- (JAVA)String常用的方法
- Bit-Z开放零门槛做市商计划 最高返100%交易手续费
- 维护100亿个URL
- windows server 2003 出错提示请求的资源在使用中解决方案
- vector常见用法
- RESTful API 特点
- 修复Ubuntu系列pip
- 逻辑回归分析与回归分析_逻辑回归从零开始的情感分析
- 网络安全|墨者学院在线靶场|投票系统程序设计缺陷分析
- 乞丐的一句话,感动中国13亿人
- 计算机硬盘hs申报要素,实例手把手教你填报HS编码和申报要素
- SPADE 阅读笔记
- 所谓的Crack大揭秘
- H3C CE3000系列交换机插入千兆光模块后发现光模块可发光但端口指示灯不亮
- Unity3D Shader 入门
- Dapp开发实战:去中心化NFT交易平台
- 负数在计算机中表示方法
- Ubuntu16.04+Kinect2摄像头进行物体识别
- win10升级win11(cpu/tpm不符合)亲测有效,保留数据