(一)K8S 资源管理方式

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

什么是资源

在K8s集群中创建的任何东西都可以被视为资源deployment、Pod、Service等等

资源的管理方式

1、命令式对象管理

直接使用命令去操作k8s的资源操作简单只能操作活动对象无法审计和跟踪所以通常用于测试
命令语法kubectl command [type] [name] [flags]
	command指定要对资源执行的操作run、create、get、delete
	type指定资源的类型deployment、pod、service
	name指定资源的名称名称大小写敏感
	flags指定额外的可选参数

command

kubectl --help # 查询所有command
  • 基础命令
    create【创建资源】
    edit【编辑资源】
    set【为对象设置指定特性】
    get【显示资源】
    delete【删除资源】

  • 运行、调试命令
    run【在集群上运行特定镜像】
    expose【暴露资源为Service】
    describe【 显示特定资源或资源组的详细信息】
    explain【显示资源文档】
    logs【打印 Pod 中容器的日志】
    attach【挂接到一个运行中的容器】
    exec【在某个容器中执行一个命令】
    port-forward【将一个或多个本地端口转发到某个 Pod】
    proxy【运行一个指向 Kubernetes API 服务器的代理】
    cp【在Pod内、外复制文件】
    auth【检查授权】
    debug【创建调试会话以排除工作负载和节点故障】
    events【列出事件】

  • 高级命令
    apply【根据文件名或stdin创建资源】
    replace【根据文件名或stdin替换资源】
    patch【更新资源】
    diff【区分实时版本与潜在应用版本】
    wait【Experimental: Wait for a specific condition on one or many resources】
    kustomize【Build a kustomization target from a directory or URL】

  • 设置指令
    label【更新某资源上的标签】
    annotate【更新一个资源的注解】
    completion【输出指定shellbash、zsh、fish或powershell的shell完成代码】

  • 部署指令
    rollout【Manage the rollout of a resource】
    scale【Set a new size for a deployment, replica set, or replication controller】
    autoscale【Auto-scale a deployment, replica set, stateful set, or replication controller】

  • 集群管理指令
    cluster-info【展示集群信息】
    top【Display resource (CPU/memory) usage】
    cordon【标记节点为不可调度】
    uncordon【标记节点为可调度】
    drain【 清空节点以准备维护】
    taint【更新一个或者多个节点上的污点】
    certificate【修改证书资源】

  • 其它指令
    alpha【Commands for features in alpha】
    api-resources【Print the supported API resources on the server】
    api-versions【Print the supported API versions on the server, in the form of “group/version”】
    config【修改 kubeconfig 文件】
    plugin【Provides utilities for interacting with plugins】
    version【输出客户端和服务端的版本信息】

type

kubectl api-resources # 查询所有type
  • 集群级别资源
    namespaces【命名空间隔离Pod】
    nodes【集群组成部分】

  • Pod资源
    pods【装载容器】

  • Pod资源控制器
    deployments【Pod控制器】
    replicationcontrollers
    replicasets
    daemonsets
    statefulsets
    controllerrevisions
    jobs
    cronjobs
    horizontalpodautoscalers

  • 服务发现资源
    services【统一Pod对外接口】
    ingresses【统一Pod对外接口】
    ingressclasses
    networkpolicies

  • 存储资源
    csidrivers
    csinodes
    csistoragecapacities
    storageclasses
    volumeattachments

  • 配置资源
    configmaps
    secrets

  • 其它
    bindings
    componentstatuses
    endpoints
    events
    limitranges
    persistentvolumeclaims
    persistentvolumes
    podtemplates
    resourcequotas
    serviceaccounts

localsubjectaccessreviews
selfsubjectaccessreviews
selfsubjectrulesreviews
subjectaccessreviews

clusterrolebindings
clusterroles
rolebindings
roles

mutatingwebhookconfigurations
validatingwebhookconfigurations

2、命令式对象配置

通过create命令和配置文件去操作kubernetes的资源如果存在则会报错
cd /home/lixing && kubectl create -f nginx-pod.yaml # 创建Pod
cd /home/lixing && kubectl get -f nginx-pod.yaml # 查询Pod
cd /home/lixing && kubectl delete -f nginx-pod.yaml # 删除Pod
  • nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata: 
  name: nginx-pod
  namespace: dev
  labels: 
    env: "dev"
    version: "1.0"
spec: 
   containers: 
   - image: nginx:1.17.1
     imagePullPolicy: IfNotPresent
     name: nginx-container
     ports:
     - name: nginx-port
       containerPort: 80
       protocol: TCP

3、声明式对象配置

通过apply命令和配置文件去操作kubernetes的资源。可以同时操作一个目录下的多个配置文件出现错误难调试。
apply的资源不存在则创建存在则更新相当于create和patch的组合
cd /home/lixing && kubectl apply -f nginx-pod.yaml # 创建Pod
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s