K8S资源管理方式

概述

image-20250415203117628

  1. 命令式对象管理:直接通过命令去操作 Kubernetes 的资源。
kubectl run nginx-pod --image=nginx:latest --port=80

image-20250415203013323

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

    kubectl create/patch/delete -f nginx-pod.yaml
    
  2. 声明式对象配置:通过 apply 命令和配置文件去操作 Kubernetes 的资源。

    kubectl apply -f nginx-pod.yaml
    

命令式对象管理

kubectl命令

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

  • kubectl 命令的语法如下:

kubectl [command] [type] [name] [flags]
  • 参数:

    • command:指定要对资源执行的操作,如:create、get 、delete 等。
    • type:指定资源的类型,如:deployment 、pod 、service 等。
    • name:指定资源的名称,名称大小写敏感。
    • flags:指定额外的可选参数。
  • https://kubernetes.io/zh-cn/docs/reference/kubectl/ 参考这个可以看命令作用

示例: 获取所有pod

kubectl get pod -A

image-20250415203624097

示例:以 yaml 格式查看某个 Pod

image-20250415203833241

获取集群信息

image-20250415204008321

查询命名空间

kubectl get ns

image-20250415204214631

创建命名空间

kubectl create ns dev

image-20250415204310952

操作

image-20250415203923960

image-20250415203931586

image-20250415203937421

命令式对象配置

喵~好的喵!主人要全部这些资源组件的kubectl create命令模板一次性列出来喵~Taffy这就来给你整理喵!(=・ω・=)ノ☆


kubectl 创建各种资源的命令模板

1. 创建 Pod

kubectl run pod my-pod --image=nginx --dry-run=client -o yaml

image-20250415205049141

2. 创建 Deployment

kubectl create deployment my-deployment --image=nginx --dry-run=client -o yaml

image-20250415205102181

3. 创建 Service (ClusterIP 类型)

@meowrain ➜ /workspaces/structlog (main) $ kubectl create service --help
Create a service using a specified subcommand.

Aliases:
service, svc

Available Commands:
  clusterip      Create a ClusterIP service
  externalname   Create an ExternalName service
  loadbalancer   Create a LoadBalancer service
  nodeport       Create a NodePort service

Usage:
  kubectl create service [flags] [options]

Use "kubectl create service <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).
kubectl create service clusterip my-service --tcp=80:80 --dry-run=client -o yaml

image-20250415205116623

4. 创建 ConfigMap (从字面量)

kubectl create configmap my-config --from-literal=key1=value1 --dry-run=client -o yaml

5. 创建 Secret (通用类型,从字面量)

kubectl create secret generic my-secret --from-literal=password=123456 --dry-run=client -o yaml

6. 创建 Namespace

kubectl create namespace my-namespace --dry-run=client -o yaml

7. 创建 Job

kubectl create job my-job --image=busybox -- dry-run=client -o yaml -- sleep 10

8. 创建 CronJob

kubectl create cronjob my-cronjob --schedule="*/1 * * * *" --image=busybox --dry-run=client -o yaml -- sleep 10

备注:

  • --dry-run=client 是告诉kubectl只是生成YAML,不实际创建
  • -o yaml 表示输出YAML格式内容,方便保存或修改
  • 有些资源用kubectl create命令本身不支持生成完整模板,像 StatefulSet、Ingress 这些通常用YAML文件定义或用其他工具生成

创建nginx pod

apiVersion: v1
kind: Namespace
metadata:
  name: dev
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: dev
spec:
  containers:
    - name: nginx
      image: nginx:latest
      ports:
        - containerPort: 80
---

image-20250415211713128