当前位置: 首页 > news >正文

K8s 资源管理与操作

K8s 资源管理与操作

一、资源管理介绍

Kubernetes 将所有内容抽象为资源,用户通过操作资源来管理集群。Kubernetes 本质上是一个集群系统,用户可以在其中部署服务,即在集群中运行容器,并将程序运行于容器中。

  • Kubernetes 的最小管理单元是 Pod,而不是容器。容器必须放在 Pod 中。
  • Kubernetes 通常不直接管理 Pod,而是通过 Pod 控制器 进行管理。
  • Pod 提供服务后,通过 Service 资源实现服务的访问。
  • 若 Pod 中的数据需要持久化,Kubernetes 提供了多种 存储系统

学习 Kubernetes 的核心,就是学习如何对 Pod、Pod 控制器、Service、存储等资源进行操作。

二、资源管理方式

Kubernetes 支持三种资源管理方式:

类型操作对象适用环境优点缺点
命令式对象管理对象测试简单无法审计、跟踪,仅操作活动对象
命令式对象配置文件开发可审计、跟踪配置文件多时操作麻烦
声明式对象配置目录开发支持目录操作意外情况下难以调试
示例
kubectl 子命令 Tab 补齐方法
[root@master ~]# source /usr/share/bash-completion/bash_completion
[root@master ~]# source <(kubectl completion bash)
[root@master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
命令式对象管理:直接使用命令去操作kubernetes资源
kubectl run nginx-pod --image=nginx:1.17.1 --port=80
  • kubectl run - 创建和运行Pod的基础命令
  • nginx-pod - 为Pod指定的名称
  • –image=nginx:1.17.1 - 指定使用的容器镜像(nginx版本1.17.1)
  • –port=80 - 声明容器暴露的端口号(Nginx默认服务端口)
命令式对象配置:通过命令配置和配置文件去操作kubernetes资源
Kubectl create/path -f nginx-pod.yml
  • kubectl create - 创建新资源
  • /path - 这里是具体的子命令或路径
  • -f nginx-pod.yml - 指定使用的YAML配置文件
声明式对象配置:通过apply和配置文件去操作kubernetes资源
Kubectl apply -f nginx-pod.yml
  • apply - 声明式应用配置(创建或更新)
  • -f - 从文件加载配置
  • nginx-pod.yml - YAML 配置文件

三、kubectl 命令语法

语法
kubectl [command] [type] [name] [flags]
  • command:对资源执行的操作,如 creategetdelete
  • type:资源类型,如 deploymentpodservice
  • name:资源名称(大小写敏感)
  • flags:可选参数
查看 node 节点
[root@master ~]# kubectl get node
NAME     STATUS   ROLES           AGE   VERSION
master   Ready    control-plane   39h   v1.28.15
node1    Ready    <none>          38h   v1.28.15
node2    Ready    <none>          38h   v1.28.15
查看命名空间
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   39h
kube-node-lease   Active   39h
kube-public       Active   39h
kube-system       Active   39h
查看某个命名空间的 pod
[root@master ~]# kubectl get pods -n kube-system
NAME                                      READY   STATUS    RESTARTS      AGE
calico-kube-controllers-9d57d8f49-88mgl   1/1     Running   2 (25m ago)   39h
calico-node-2vw44                         1/1     Running   2 (25m ago)   39h
calico-node-52ms4                         1/1     Running   2 (25m ago)   38h
calico-node-7kh9c                         1/1     Running   2 (25m ago)   38h
coredns-6554b8b87f-mjx7v                  1/1     Running   2 (25m ago)   39h
coredns-6554b8b87f-sz9ft                  1/1     Running   2 (25m ago)   39h
etcd-master                               1/1     Running   2 (25m ago)   39h
kube-apiserver-master                     1/1     Running   3 (24m ago)   39h
kube-controller-manager-master            1/1     Running   2 (25m ago)   39h
kube-proxy-dww5p                          1/1     Running   2 (25m ago)   38h
kube-proxy-lqh62                          1/1     Running   2 (25m ago)   38h
kube-proxy-nmtph                          1/1     Running   2 (25m ago)   39h
kube-scheduler-master                     1/1     Running   2 (25m ago)   39h
不指定命名空间查看 pod

默认查看 default 中的 pod

[root@master ~]# kubectl get pods
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          23s
查看某个 pod 的详细信息
[root@master ~]# kubectl describe pods nginx-pod 
Name:             nginx-pod
Namespace:        default
Priority:         0
Service Account:  default
Node:             node1/192.168.100.20
Start Time:       Thu, 30 Oct 2025 09:09:50 +0800
......
查看某个 pod,以 yaml 格式输出
[root@master ~]# kubectl get pod nginx-pod -o yaml
apiVersion: v1
kind: Pod
metadata:
......
查看全部 pod
[root@master ~]# kubectl get pod -A
查看集群中所有 Pod 的详细信息,其中 -o wide 选项会显示更全面的输出
[root@master ~]# kubectl get pods -o wide
常用资源类型

Kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看

[root@master ~]# kubectl api-resources
资源分类资源名称缩写作用
集群资源nodesno集群节点
namespacesns隔离 Pod
Pod 资源podspo装载容器
Pod 控制器replicationcontrollersrc控制 Pod
replicasetsrs控制 Pod
deploymentsdeploy控制 Pod
daemonsetsds控制 Pod
jobs控制 Pod
cronjobscj控制 Pod
horizontalpodautoscalershpa控制 Pod
statefulsetssts控制 Pod
服务发现资源servicessvc统一 Pod 对外接口
ingressing统一 Pod 对外接口
存储资源persistentvolumespv存储
persistentvolumeclaimspvc存储
volumeattachments存储
配置资源configmapscm配置
secrets配置
常用操作命令

Kubernetes 允许对资源进行多种操作,可以通过–help查看详细的操作命令

[root@master ~]# kubectl --help
命令分类命令翻译命令作用
基本命令create创建创建一个资源
edit编辑编辑一个资源
get获取获取一个资源
patch更新更新一个资源
delete删除删除一个资源
explain解释展示资源文档
run运行在集群中运行一个指定的镜像
expose暴露暴露资源为service
describe描述显示资源内部信息
logs日志输出容器在pod中的日志输出容器在pod中的日志
attach缠绕进入运行中的容器进入运行中的容器
exec执行容器中的一个命令执行容器中的一个命令
cp复制在pod内外复制文件
rollout首次展示管理资源的发布
scale规模扩(缩)容pod的数量
autoscale自动调整自动调整pod的数量
高级命令applyRc通过文件对资源进行配置
label标签通过文件对资源进行配置
其他命令cluster-info集群信息显示集群信息
version版本显示当前server和client版本
示例
创建命名空间
[root@master ~]# kubectl create ns wil
namespace/wil created
查看命名空间
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   39h
kube-node-lease   Active   39h
kube-public       Active   39h
kube-system       Active   39h
wil               Active   12s
在命名空间中创建 pod
[root@master ~]# kubectl run test-pod --image=nginx -n wil
查看 pod
[root@master ~]# kubectl get pods -n wil
NAME       READY   STATUS    RESTARTS   AGE
test-pod   1/1     Running   0          22s
编辑 pod
[root@master ~]# kubectl edit pod test-pod -n wil
Edit cancelled, no changes made.
删除 pod
[root@master ~]# kubectl delete pod test-pod -n wil
pod "test-pod" deleted
删除命名空间
[root@master ~]# kubectl delete ns wil
namespace "wil" deleted

四、命令式对象配置

命令式对象配置就是使用命令配合配置文件一起来操作 kubernetes 资源

使用官方文档查询模板:https://kubernetes.io/doc

创建一个nginxpod.yaml
[root@master ~]# vim nginxpod.yaml
apiVersion: v1
kind: Namespace
metadata:name: wil
---apiVersion: v1
kind: Pod
metadata:name: nginx
spec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
执行 create 命令,创建资源

创建了两个资源对象,分别是namespace和pod

[root@master ~]# kubectl create -f nginxpod.yaml 
namespace/wil created
pod/nginx created
执行 get 命令,查看资源

显示了两个资源对象的信息

[root@master ~]# kubectl get -f nginxpod.yaml 
NAME            STATUS   AGE
namespace/wil   Active   13sNAME        READY   STATUS              RESTARTS   AGE
pod/nginx   0/1     ContainerCreating   0          13s
执行 delete 命令,删除资源

两个资源对象被删除了

[root@master ~]# kubectl delete -f nginxpod.yaml 
namespace "wil" deleted
pod "nginx" deleted

命令式对象配置的方式操作资源,可以简单的认为:命令+yaml配置文件(里面是命令需要的各种参数)

五、声明式对象配置

声明式对象配置跟命令式对象配置很相似,但是它只有一个命令 apply

首先执行一次
[root@master ~]# kubectl apply -f nginxpod.yaml 
namespace/wil created
pod/nginx created
再执行一次,发现说资源没有变动
[root@master ~]# kubectl apply -f nginxpod.yaml 
namespace/wil unchanged
pod/nginx unchanged
特点
  • 其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)

  • 资源不存在时:创建(相当于 kubectl create

  • 资源已存在时:更新(相当于 kubectl patch

六、使用推荐

操作推荐方式命令示例
创建/更新声明式对象配置kubectl apply -f XXX.yaml
删除命令式对象配置kubectl delete -f XXX.yaml
查询命令式对象管理kubectl get/describe
http://www.dtcms.com/a/548880.html

相关文章:

  • 如何在 Azure 虚拟机上部署 Elasticsearch
  • Go切片的赋值
  • Go语言设计模式:原型模式详解
  • 泉州网站建设-泉州网站建设石家庄网站建设招聘
  • [MySQL]表——权限控制
  • 把AI“灌”进奶瓶:1KB决策树让婴儿温奶器自己学会「恒温+计时」
  • 视频网站怎么做移动广告联盟
  • 高速DIC技术用于无人机旋翼动态变形与轨迹姿态分析
  • Node.js环境变量配置
  • Docker 部署 Node.js + Playwright 项目,实现浏览器截图、打印和下载
  • 所有权与解构:一次把“拆”与“留”写进类型系统的旅程 ——从语法糖到零拷贝 AST
  • 基于ASM1042通信接口芯片的两轮车充电机性能优化研究
  • hadoop之MapReduce的map工作流程
  • 民治做网站公司门户网站开发要求
  • 设计师网站欣赏企业官网模板图下载
  • 图像与视频页面的数据提取:从OCR到关键帧抽取的一场“视觉接管”
  • 常州城乡建设学校网站上海自动seo
  • Android15 Camera系统调试操作
  • 建模工具Enterprise Architect:敏捷开发中的架构治理与迭代适配
  • [HDiffPatch] 补丁算法 | `patch_decompress_with_cache` | `getStreamClip` | RLE游程编码
  • 【C++ vector 深度解析】:动态数组的使用与底层原理实战
  • 【0基础学算法】前缀和刷题日志(三):连续数组、矩阵区域和
  • 学习网站建设与管理汉沽集团网站建设
  • 10月30日
  • ESP32开发指南(基于IDF):连接AWS,乐鑫官方esp-aws-iot-master例程实验、跑通
  • Cocos资源加密方案解析
  • 从零开始的云原生之旅(六):DaemonSet 实战日志采集器
  • 网站建设人员任职要求电器类网站设计
  • [论文阅读] AI + Debug | 基于大语言模型的GitHub故障复现测试用例生成方法解析
  • 关于App的gradle降级问题的总结