Kubernetes 的资源管理方式

集群架构

Docker 是每一个节点(包括 Master 节点和 Node 节点)的运行时环境。

        kubelet 负责控制所有容器的启动和停止等,保证每个节点(包括 Master 节点和 Node 节点)正常工作,并且帮助 Node 节点和 Master 节点进行交互。

Master 节点的关键组件

  • kubelet(监工):所有节点必备的。控制当前节点所有 Pod 的生命周期以及与 api-server 交互等工作。
  • kube-api-server:负责接收所有请求。集群内对集群的任何修改都是通过命令行、UI 将请求发给 api-server 才能执行的。api-server 是整个集群操作对内、对外的唯一入口,不包含我们后来部署应用暴露端口的方式。
  • kube-proxy:整个节点的网络流量负责。
  • cri:容器运行时环境(如:Docker 、Podman 等)。

Node 节点的关键组件:

  • kubelet(监工):所有节点必备的。控制当前节点所有 Pod 的生命周期以及与 api-server 交互等工作。
  • kube-proxy:整个节点的网络流量负责。
  • cri:容器运行时环境(如:Docker 、Podman 等)。

 资源管理方式

① 命令式对象管理:直接通过命令去操作 Kubernetes 的资源。

kubectl run nginx-pod --image=nginx:1.17.1 --port=80


② 命令式对象配置:通过命令配置和配置文件去操作 Kubernetes 的资源。

kubectl create/patch/delete -f nginx-pod.yaml


③ 声明式对象配置:通过 apply 命令和配置文件去操作 Kubernetes 的资源。

kubectl apply -f nginx-pod.yaml

类型

操作

适用场景

优点

缺点

命令式对象管理

对象

测试

简单

只能操作活动对象,无法审计、跟踪

命令式对象配置

文件

开发

可以审计、跟踪

项目大的时候,配置文件多,操作麻烦

声明式对象配置

目录

开发

支持目录操作

意外情况下难以调试

命令式对象管理

kubectl 命令

  • kubectl 是 Kubernetes 集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。

参数:

  • command:指定要对资源执行的操作,如:create、get 、delete 等。
  • type:指定资源的类型,如:deployment 、pod 、service 等。
  • name:指定资源的名称,名称大小写敏感。
  • flags:指定额外的可选参数。
[root@k8s-master ~]# kubectl get pod 
NAME                     READY   STATUS    RESTARTS   AGE
nginx-65c4bffcb6-f9b55   1/1     Running   0          81m
[root@k8s-master ~]# kubectl get pod nginx-65c4bffcb6-f9b55 -o yaml
apiVersion: v1
kind: Pod
metadata:
  annotations:
    cni.projectcalico.org/containerID: c1ccb59bf2b30c580de0ee177f1eb122047ce0b066df816b434c559c0b89c094
    cni.projectcalico.org/podIP: 10.244.169.129/32
    cni.projectcalico.org/podIPs: 10.244.169.129/32
  creationTimestamp: "2024-12-27T10:04:42Z"
  generateName: nginx-65c4bffcb6-
  labels:
    app: nginx
    pod-template-hash: 65c4bffcb6
  name: nginx-65c4bffcb6-f9b55
  namespace: default
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: nginx-65c4bffcb6
    uid: c04281de-fdb0-4f23-8309-8c4adb140977
  resourceVersion: "9026"
  uid: 4a282996-80b5-4cc8-85a1-1ccd0c22a090
spec:
  containers:
  - image: nginx:1.14-alpine
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-mz6pk
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: k8s-node2
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: kube-api-access-mz6pk
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2024-12-27T10:04:42Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2024-12-27T10:04:58Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2024-12-27T10:04:58Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2024-12-27T10:04:42Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: docker://d10a9daced59d3ab91e06aed7456808c727d450fdbb7b21be5180957f37e16ba
    image: nginx:1.14-alpine
    imageID: docker-pullable://nginx@sha256:485b610fefec7ff6c463ced9623314a04ed67e3945b9c08d7e53a47f6d108dc7
    lastState: {}
    name: nginx
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2024-12-27T10:04:57Z"
  hostIP: 192.168.58.233
  phase: Running
  podIP: 10.244.169.129
  podIPs:
  - ip: 10.244.169.129
  qosClass: BestEffort
  startTime: "2024-12-27T10:04:42Z"
  • 基本命令:

命令

翻译

命令作用

create

创建

创建一个资源

edit

编辑

编辑一个资源

get

获取

获取一个资源

patch

更新

更新一个资源

delete

删除

删除一个资源

explain

解释

展示资源文档

  •  运行和调试:

命令

翻译

命令作用

run

运行

在集群中运行一个指定的镜像

expose

暴露

暴露资源为 Service

describe

描述

显示资源内部信息

logs

日志

输出容器在 Pod 中的日志

attach

缠绕

进入运行中的容器

exec

执行

执行容器中的一个命令

cp

复制

在 Pod 内外复制文件

rollout

首次展示

管理资源的发布

scale

规模

扩(缩)容 Pod 的数量

autoscale

自动调整

自动调整 Pod 的数量

  •  高级命令:

命令

翻译

命令作用

apply

应用

通过文件对资源进行配置

label

标签

更新资源上的标签

  •  其他命令:

命令

翻译

命令作用

cluster-info

集群信息

显示集群信息

version

版本

显示当前 Client 和 Server 的版本

资源类型(type)

  • Kubernetes 中所有的内容都抽象为资源,可以通过下面的命令进行查看:
[root@k8s-master ~]# kubectl api-resources
  • 经常使用的资源如下所示:
  •  集群级别资源:

资源名称

缩写

资源作用

nodes

no

集群组成部分

namespaces

ns

隔离 Pod

  • Pod资源:

资源名称

缩写

资源作用

Pods

po

装载容器

  • Pod资源控制器:

资源名称

缩写

资源作用

replicationcontrollers

rc

控制 Pod 资源

replicasets

rs

控制 Pod 资源

deployments

deploy

控制 Pod 资源

daemonsets

ds

控制 Pod 资源

jobs

控制 Pod 资源

cronjobs

cj

控制 Pod 资源

horizontalpodautoscalers

hpa

控制 Pod 资源

statefulsets

sts

控制 Pod 资源

  • 服务发现资源:

资源名称

缩写

资源作用

services

svc

统一 Pod 对外接口

ingress

ing

统一 Pod 对外接口

  • 存储资源:

资源名称

缩写

资源作用

volumeattachments

存储

persistentvolumes

pv

存储

persistentvolumeclaims

pvc

存储

  •  配置资源:

资源名称

缩写

资源作用

configmaps

cm

配置

secrets

配置

查看,创建,删除名称空间 

[root@k8s-master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   46h
kube-node-lease   Active   46h
kube-public       Active   46h
kube-system       Active   46h
[root@k8s-master ~]# kubectl create ns dev
namespace/dev created
[root@k8s-master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   46h
dev               Active   2s
kube-node-lease   Active   46h
kube-public       Active   46h
kube-system       Active   46h
[root@k8s-master ~]# kubectl delete ns dev
namespace "dev" deleted
[root@k8s-master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   46h
kube-node-lease   Active   46h
kube-public       Active   46h
kube-system       Active   46h

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943690.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

指针与数组:深入C语言的内存操作艺术

数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时,有这样的代码: int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 这⾥我们使⽤ &arr[0] 的⽅式拿到了数组…

Python的数字类型

python的数字类型包括:整数,浮点数,复数。 整数 python的整数没有长度限制,无限大,有无限的精度 python的整数除法,即便能整除,结果也是小数,小数 在python中用float类型表示&…

【连续学习之SS-IL算法】2021年CPVR会议论文Ss-il:Separated softmax for incremental learning

1 介绍 年份:2021 期刊: 2021CPVR Ahn H, Kwak J, Lim S, et al. Ss-il: Separated softmax for incremental learning[C]//Proceedings of the IEEE/CVF International conference on computer vision. 2021: 844-853. 本文提出的SS-IL&#xff08…

3.BMS系统原理图解读

一、BMS电池板 (1)电池的连接关系:串联 (2)采样控制点:CELL0 - CELL5 (3)端子P1和P3:BAT和BAT- (4)开关S1:控制充放电回路的机械开关 二、BMS控制板 (1)主控MCU 电源 复位 晶振 (2)LED指示灯:4电量指示 1调试指…

洛谷P5250 【深基17.例5】木材仓库(c嘎嘎)

题目链接:P5250 【深基17.例5】木材仓库 - 洛谷 | 计算机科学教育新生态 题目难度:普及/提高 解题心得:本题借鉴了大佬的做法(因为没想多好的处理方法~~),本题可以用map,对于操作1,存的话直接另…

pyqt和pycharm环境搭建

安装 python安装: https://www.python.org/downloads/release/python-3913/ python3.9.13 64位(记得勾选Path环境变量) pycharm安装: https://www.jetbrains.com/pycharm/download/?sectionwindows community免费版 换源: pip config se…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图,如下: 图片可点击放大 接下来我们来介绍一下 推荐学习:GIS入门模型构建器Arcpy批量…

深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)

计算机视觉从小白到大师之路 《深度学习与图像处理(PaddlePaddle版)》这一本就够了 1.引言 随着人工智能技术的飞速发展,各行各业对深度学习、图像处理相关领域的人才需求日益迫切。本书旨在通过系统的理论讲解与丰富的实战案例&#xff0…

Bluetooth Spec【0】蓝牙核心架构

蓝牙核心系统由一个主机、一个主控制器和零个或多个辅助控制器组成蓝牙BR/ EDR核心系统的最小实现包括了由蓝牙规范定义的四个最低层和相关协议,以及一个公共服务层协议;服务发现协议(SDP)和总体配置文件要求在通用访问配置文件&a…

代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。

1.岛屿数量深搜 卡码网题目链接(ACM模式)(opens new window) 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接…

【机器学习与数据挖掘实战】案例06:基于Apriori算法的餐饮企业菜品关联分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联…

突破传统,探索单页网站的强大潜力!

单页网站简单、直接,而且设计通常令人惊叹,非常适合展示关键信息而不会让访问者不知所措。 然而,构建单页网站有其自身的挑战,尤其是在 SEO 方面。由于内容数量有限且针对特定关键字的页面较少,可能很难在 SERP 中进行…

攻防世界web新手第四题easyphp

<?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die("Emmm...再想想&quo…

Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 比赛信息管理 看板展示 系统管理 摘要 本文使用Python与…

【已解决】pyinstaller打包ico图片报错:OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。

起因&#xff1a; pyinstaller加上 --icon 参数打包时报错。 命令如下&#xff1a; 解决&#xff1a; 关闭 Windows 的病毒防护即可&#xff0c;步骤如下。 点屏幕右下角通知栏&#xff0c;进入“病毒和威胁防护”&#xff1a; 打开&#xff1a; 关闭实时保护&#xff08…

Cloudflare 边缘网络架构:无处不在的 BPF-2019

大家觉得有意义和帮助记得及时关注和点赞!!! 译者序边缘网络DDos Mitigation负载均衡TCP/UDP Socket DispatchSOCKMAPPrometheus - ebpf_exporter无处不在的 eBPF 边缘网络 Cloudflare 的服务器运行 Linux 系统。 我们的数据中心分为两类&#xff1a; 大的“核心”数据中心&a…

智慧园区小程序开发制作功能介绍

智慧园区小程序开发制作功能介绍 智慧园区小程序系统作为一款面向园区企业的一站式线上服务平台&#xff0c;可为企业提供数智化的园区办公服务。智慧园区小程序功能介绍 1、园区公告、政策信息查看足不出户掌握最新动态&#xff0c;“园区公告、政策信息”等信息。首页点击对应…

基于 Python Django 的农产品销售系统的研究与实现

大家好&#xff0c;我是stormjun&#xff0c;今天为大家带来的是基于 Python Django 的农产品销售系统的研究与实现。该系统采用 Python 语言 开发&#xff0c;MySql 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强 &#xff0c;可供大学生实战项目参考使用。 博主介…

WEB开发 - Flask 入门:Jinja2 模板语法进阶 Python

在上一阶段&#xff0c;我们一起学习了基于Python地 web框架Flask&#xff0c;并且初步了解了这个框架有一种渲染方式叫做 模板语法&#xff0c;今天&#xff0c;我们一起再来深入地了解和学习这个叫做Jinja2地模板语法。 WEB开发 - Flask 入门&#xff1a;由浅入深地带你学习…

基于SpringBoot在线音乐系统平台功能实现十八

一、前言介绍&#xff1a; 1.1 项目摘要 随着互联网技术的迅猛发展和普及&#xff0c;人们对音乐的获取和欣赏方式发生了巨大改变。传统的音乐播放方式&#xff0c;如CD、磁带或本地下载的音乐文件&#xff0c;已经不能满足用户日益增长的需求。用户更希望通过网络直接获取各…