Kubernets的资源管理

  • 资源
  • yaml
  • namespace
  • Pod
  • Label
  • deployment
  • service
  • 数据存储
  • EmptyDir
  • HostPath
  • NFS
  • PV

资源

学习kubernets的核心,就是学习如何对集群中的PodPod控制器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的资源管理相关推荐

  1. 详解Pod和容器资源管理和分配(CPU和内存分配,临时存储管理)

    1 缘起 使用任何软件都绕不过去的问题:硬件资源分配(CPU和内存), 只有可以控制资源的分配,才能保证资源高效利用. K8S做到了, 使用K8S部署服务,可以为Pod指定CPU和内存的使用, 保证集 ...

  2. Rancher k8s 资源管理

    cgroup 简介 控制群组 (control group)(简称cgroup) 是 Linux kernel 的一项功能.从使用的角度看,cgroup 是一个目录树结构,目录中可以创建多层子目录,这 ...

  3. 【C++】拷贝控制与资源管理

    1. 拷贝控制与资源管理 管理类外资源的类必须定义拷贝控制成员.如P447中所见,这种类需要通过析构函数来释放对象所分配的资源.一旦一个类需要析构函数,那么几乎可确定它也需要一个拷贝构造函数和一个拷贝 ...

  4. 计算机在人力资源管理中的应用论文,计算机人事管理论文

    计算机人事管理论文 1.计算机在人事管理中的应用 目前,计算机已广泛应用于劳资管理.人事档案管理等方面,大大减轻了员工的负担,并且很大程度地提高了人事管理工作的效率,使人事管理工作更加科学化.系统化. ...

  5. LomoX 桌面UI框架更新,增加资源管理

    修改: 1.增加lxoption工具类,提供启动的兼容,兼容旧版的,并支持注册资源启动 (蔡东赟) 兼容启动项目: main.lx //资源包默认现在用 qrc:/pack/main.html 后面评 ...

  6. “解决方案资源管理器”中不能自动选择正在编辑的文档

    本来正在编辑的文档应该在"解决方案资源管理器"中自动选中的,但是我的VS2005机器好像没有这个功能,后来发现 "工具->选贤"里边的"项目和解 ...

  7. 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门

    1.1 环境 Visual Studio + GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Me ...

  8. OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  9. 初一下计算机课教案,川教版信息技术七下第1课《计算机资源管理》word教案1

    川教版信息技术七下第1课<计算机资源管理>word教案1 第一课 计算机资源管理 教学目标 (1)了解计算机中的资源. (2)了解"我的电脑"."资源管理器& ...

  10. Webpack 资源管理

    资源管理 提示: 版本问题 本文基于 webpack 2.x 版本.webpack 2.x 相比 webpack 1.x 有重大改变.所以,如果你的项目中已使用了 webpack 1.x ,本教程的示 ...

最新文章

  1. 中国程序员人数将增长50%,过半500强都要卖软件,边缘应用程序增长8倍丨IDC预测下一个五年...
  2. (JAVA)String常用的方法
  3. Bit-Z开放零门槛做市商计划 最高返100%交易手续费
  4. 维护100亿个URL
  5. windows server 2003 出错提示请求的资源在使用中解决方案
  6. vector常见用法
  7. RESTful API 特点
  8. 修复Ubuntu系列pip
  9. 逻辑回归分析与回归分析_逻辑回归从零开始的情感分析
  10. 网络安全|墨者学院在线靶场|投票系统程序设计缺陷分析
  11. 乞丐的一句话,感动中国13亿人
  12. 计算机硬盘hs申报要素,实例手把手教你填报HS编码和申报要素
  13. SPADE 阅读笔记
  14. 所谓的Crack大揭秘
  15. H3C CE3000系列交换机插入千兆光模块后发现光模块可发光但端口指示灯不亮
  16. Unity3D Shader 入门
  17. Dapp开发实战:去中心化NFT交易平台
  18. 负数在计算机中表示方法
  19. Ubuntu16.04+Kinect2摄像头进行物体识别
  20. win10升级win11(cpu/tpm不符合)亲测有效,保留数据

热门文章

  1. 短轮询和长轮询的区别到底是什么
  2. WSUS环境下客户端常用命令
  3. 我的世界服务器自动刷矿机,我的世界空岛刷矿机制作教程
  4. 无锡python程序员_Python程序员学习路线图
  5. 三大微分中值定理及泰勒中值定理证明
  6. MIP(Mobile instant pages 移动网页加速器)
  7. matlab showwindow,问题解决——ShowWindow不显示窗口
  8. ShowWindow与UpdateWindow
  9. LUK-Triumphal arch
  10. python母亲节代码_python 计算 母亲节