⚡4. Kubernetes核心资源管理操作实战

文章目录

    • [`kubectl [command] [TYPE] [NAME] [flags]`](#kubectl [command] [TYPE] [NAME] [flags])
    • [`kubectl run 资源名称 --image=镜像名称 --port=端口号`](#kubectl run 资源名称 --image=镜像名称 --port=端口号)
    • [`kubectl create -f 配置文件名称.yaml` `kubectl apply -f 配置文件名称.yaml`](#kubectl create -f 配置文件名称.yaml kubectl apply -f 配置文件名称.yaml)
    • 快速编写yaml文件,通过命令导出新的yaml文件
    • Kubernetes常见资源类型和缩写

kubectl [command] [TYPE] [NAME] [flags]

  • commad:对资源具体的操作,如create创建、 get获取 、 delete删除
  • TYPE:指定资源类型,大小写敏感
  • NAME:指定资源的名称,大小写敏感,如果省略名称则显示所有资源
  • flags:指定可选的参数,如可用-s或者-server指定Kubernetes API server的地址和端口

example:

bash 复制代码
#获取全部节点
kubectl get node

#获取全部pod
kubectl get pod

#查看某个pod内容
kubectl get pod pod_name

#获取全部名称空间
kubectl get ns


#查看创建的资源
kubectl get pod,svc,deploy

# 删除nginx pod,如果是靠deploy控制器创建的pod, 直接删除则会自动创建新的;
kubectl delete pod pod名称

# 如果需要删除则直接删除depoly控制器即可,pod会被删除
kubectl delete deploy xdclass-nginx
kubectl delete svc xdclass-nginx

kubectl run 资源名称 --image=镜像名称 --port=端口号

bash 复制代码
kubectl run xdclass-nignx-pod --image=nginx:1.23.0 --port=80

kubectl create deployment xdclass-nginx --image=nginx:1.23.0

kubectl create -f 配置文件名称.yaml kubectl apply -f 配置文件名称.yaml

yaml 例子:

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
   name: nginx-deployment
   labels:
      app: nginx-deployment
spec:
   replicas: 1
   selector:
      matchLabels:
         app: nginx-pod
   template:
      metadata:
           labels:
              app: nginx-pod
      spec:
         containers:
         - name: nginx
             image: nginx:1.23.0
             imagePullPolicy: IfNotPresent
             ports:
             - containerPort: 80
yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx:1.23.0
    name: pod
    ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP

**kubectl create 和 kubectl apply的区别: **

  • kubectl create 命令首次执行时会创建资源,当再次执行的时候会报错,因为资源名称在同一命名空间内是唯一的
  • kubectl apply在首次执行的时候也会创建对应的资源,当再次执行的时候会根据配置文件进行升级、扩容等操作,即使配置文件没有变化也不影响

快速编写yaml文件,通过命令导出新的yaml文件

bash 复制代码
#创建nginx资源文件并且不启动资源
kubectl create deployment xdclass-nginx --image=nginx:1.23.0 -o yaml --dry-run=client > nginx.yaml

#查看nginx.yaml
cat nginx.yaml

pod的yaml文件示例:

yaml 复制代码
# pod的最基础的yaml文件最少需要以下的几个参数
apiVersion: v1 # API版本号,注意:具有多个,不同的对象可能会使用不同API
kind: Pod  # 对象类型,pod
metadata:  # 元数据
  name: string # POD名称
  namespace: string # 所属的命名空间
spec: # specification of the resource content(资源内容的规范)
  containers: # 容器列表
    - name: string # 容器名称
      image: string # 容器镜像

必须存在的属性

参数名 字段类型 说明
version String k8s API的版本,可使用kubectl api-versions命令查询
kind String 这里指定k8s资源的类型,比如Pod、Deployment
metadata Object 元数据对象,固定写值metadata
metadata-name String 元数据对象的名字,比如命名pod的名字
metadata-namespace String 元数据对象的命名空间
spec Object 详细定义对象,固定值写Spec
spec.container[] list spec对象的容器列表定义
spec.container[].name String 容器对象的名字
spec.container[].image String 定义要用到的对象名称

Kubernetes常见资源类型和缩写

:::warning

常用资源分类和缩写

  • 节点 nodes ,缩写 no
  • 名称空间 namespaces,缩写ns
  • pod资源 pods, 缩写 po
  • pod控制器
    • replicasets,缩写rs
    • deployments,缩写 deploy
  • 服务发现
    • 统一pod对外接口 services ,缩写 svc
    • 统一pod对外接口ingress ,缩写 ing
  • 存储资源
    • persistentvolumes,缩写pv
    • persistentvolumeclaims,缩写pvc
      :::

常用资源操作命令

命令分类 命令 翻译
基本命令 create 创建资源
delete 删除资源
edit 编辑资源
get 获取资源
patch 更新资源
explain 解释资源
运行和调试 run 运行指定的镜像
expose 暴露服务
describe 描述资源内部信息
logs 打印容器在 pod 中的日志
attach 进入运行中的容器
exec 执行容器中的一个命令
cp 在Pod内外复制文件
scale 扩容/缩容Pod的数量
autoscale 扩容/缩容Pod的数量
高级命令 apply rc
label 标签
其他命令 cluster-info 集群信息
version 版本
相关推荐
2401_836836599 分钟前
k8s配置管理
云原生·容器·kubernetes
一切顺势而行13 分钟前
k8s 使用docker 安装教程
docker·容器·kubernetes
霖檬ing14 分钟前
K8s——配置管理(1)
java·贪心算法·kubernetes
澜兮子14 分钟前
k8s-服务发布基础
云原生·容器·kubernetes
Andy杨15 分钟前
20250707-2-第二章:Kubernetes 核心概念-K8s集群架构,生产部署K8s两_笔记
docker·容器
小安运维日记16 分钟前
CKS认证 | Day4 最小化微服务漏洞
安全·docker·微服务·云原生·容器·kubernetes
2401_8368365917 分钟前
k8s服务发布进阶
云原生·容器·kubernetes
裁二尺秋风3 小时前
CI/CD — DevOps概念之实现k8s持续交付持续集成(一)
ci/cd·kubernetes·devops
Liudef065 小时前
Docker企业级应用:从入门到生产环境最佳实践
docker·容器·eureka
云上小朱6 小时前
问题处理-k8s环境中,hadoop端口9000无法被访问
kubernetes