【k8s】kubectl命令详解

news2024/11/25 12:56:32

文章目录

    • 命令行工具 kubectl
      • 在slave下配置kubectl
      • 资源操作
        • 创建对象
    • API概述
      • 类型
      • 访问控制
        • 认证
        • 授权
      • 废弃API说明
    • 资源管理
      • 资源管理介绍
      • 资源管理方式
        • 命令式对象管理
        • 命令式对象配置
          • 创建yaml文件
          • 创建资源
          • 查看资源
          • 删除资源
        • 声明式对象配置
      • kebectl在node节点上运行
      • 查看每种资源的可配置项
      • 推荐增删改查操作

命令行工具 kubectl

官方文档:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

在slave下配置kubectl

# 1. 将 master 节点中 /etc/kubernetes/admin.conf 拷贝到需要运行的服务器的 /etc/kubernetes 目录中
scp /etc/kubernetes/admin.conf root@slave:/etc/kubernetes

# 2. 在对应的服务器上配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

资源操作

创建对象
$ kubectl create -f ./my-manifest.yaml           # 创建资源
$ kubectl create -f ./my1.yaml -f ./my2.yaml     # 使用多个文件创建资源
$ kubectl create -f ./dir                        # 使用目录下的所有清单文件来创建资源
$ kubectl create -f https://git.io/vPieo         # 使用 url 来创建资源
$ kubectl run nginx --image=nginx                # 启动一个 nginx 实例
$ kubectl explain pods,svc                       # 获取 pod 和 svc 的文档

# 从 stdin 输入中创建多个 YAML 对象
$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
  name: busybox-sleep
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - sleep
    - "1000000"
---
apiVersion: v1
kind: Pod
metadata:
  name: busybox-sleep-less
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - sleep
    - "1000"
EOF

# 创建包含几个 key 的 Secret
$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: $(echo "s33msi4" | base64)
  username: $(echo "jane" | base64)
EOF

API概述

类型

  • Alpha(最新的)

    • 包含 alpha 名称的版本(例如v1alpha1)。

    • 该软件可能包含错误。启用一个功能可能会导致 bug。默认情况下,功能可能会被禁用。

    • 随时可能会丢弃对该功能的支持,恕不另行通知。

    • API 可能在以后的软件版本中以不兼容的方式更改,恕不另行通知。

    • 该软件建议仅在短期测试集群中使用,因为错误的风险增加和缺乏长期支持。

  • Beta

    • 包含 beta 名称的版本(例如 v2beta3)。
    • 该软件经过很好的测试。启用功能被认为是安全的。默认情况下功能是开启的。
    • 细节可能会改变,但功能在后续版本不会被删除
    • 对象的模式或语义在随后的 beta 版本或 Stable 版本中可能以不兼容的方式发生变化。如果这种情况发生时,官方会提供迁移操作指南。这可能需要删除、编辑和重新创建API对象。
    • 该版本在后续可能会更改一些不兼容地方,所以建议用于非关键业务,如果你有多个可以独立升级的集群,你也可以放宽此限制。
    • 大家使用过的 Beta 版本后,可以多给社区反馈,如果此版本在后续更新后将不会有太大变化。
  • Stable(稳定版 -> 用这个)

    • 该版本名称命名方式:vX 这里 X 是一个整数。
    • Stable 版本的功能特性,将出现在后续发布的软件版本中。

访问控制

认证
授权

废弃API说明

https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-guide/

资源管理

学习kubernetes的核心,就是学习如何对集群上的Pod、Pod控制器、Service、存储等各种资源进行操作

资源管理介绍

  1. k8s本质就是一个集群系统,用户在集群中部署各种服务

    部署服务就是在k8s集群中,运行一个个的容器,并将制定的程序跑在容器内部

  2. k8s的最小管理单元是pod而不是容器,所以只能将容器放在pod中

    而k8s通常不会直接去管理pod,而是通过pod管理器来管理pod的

  3. 如何访问pod的服务呢?k8s提供了service资源实现这个功能

  4. 当然了,为了确保pod中程序数据的持久化,k8s还提供了各种存储系统

资源管理方式

类型操作对象适用环境优点缺点
命令式对象管理对象测试简单只能操作活动对象,无法审计、跟踪
命令式对象配置文件开发可以审计、跟踪项目大时,配置文件多,操作麻烦
声明式对象配置目录开发支持目录操作意外情况下难以调试
  • 命令式对象管理:直接使用命令去操作k8s资源

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

  • 命令式对象配置:通过命令配置和配置文件去操作k8s资源

    kubectl create/patch -f nginx-pod.yaml

  • 声明式对象配置:通过apply命令和配置文件去操作k8s资源

    kubectl apply -f nginx-pod.yaml

命令式对象管理

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

  • 命令语法格式

    kubectl [command] [type] [name] [flags]

    • comand:指定要对资源执行的操作,例如create、get、delete
    • type:指定资源类型,比如deployment、pod、service
    • name:指定资源的名称,名称大小写敏感
    • flags:指定额外的可选参数

    eg

    # 查看所有pod
    kubectl get pod 
    
    # 查看某个pod
    kubectl get pod pod_name
    
    # 查看某个pod,以yaml格式展示结果
    kubectl get pod pod_name -o yaml
    
  • 资源name

    k8s中所有的内容都抽象为资源,可以通过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对外接口
    存储资源volumeattachments存储
    persistentvolumespv存储
    persistentvolumeclaimspvc存储
    配置资源configmapscm配置
    secrets配置
  • 操作指令command

    k8s允许对资源进行多种操作,可以通过–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的版本

    下面以一个namespace/pod的创建和删除来简单演示下

    # 创建一个namespace
    [root@master ~]# kubectl create namespace dev
    namespace/dev created
    
    # 获取namespace
    [root@master ~]# kubectl get ns
    NAME              STATUS   AGE
    default           Active   21h
    dev               Active   21s
    kube-node-lease   Active   21h
    kube-public       Active   21h
    kube-system       Active   21h
    
    # 在此namespace下创建并运行一个nginx的Pod
    [root@master ~]# kubectl run pod --image=nginx:latest -n dev
    kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
    deployment.apps/pod created
    
    # 查看新创建的pod
    [root@master ~]# kubectl get pod -n dev
    NAME  READY   STATUS    RESTARTS   AGE
    pod   1/1     Running   0          21s
    
    # 删除指定的pod
    [root@master ~]# kubectl delete pod pod-864f9875b9-pcw7x
    pod "pod" deleted
    
    # 删除指定的namespace
    [root@master ~]# kubectl delete ns dev
    namespace "dev" deleted
    
命令式对象配置

使用命令配合配置文件一起去操作k8s资源

创建yaml文件
apiVersion: v1
kind: Namespace
metadata:
  name: dev

---

apiVersion: v1
kind: Pod
metadata:
  name: nginxpod
  namespace: dev
spec:
  containers:
  - name: nginx-containers
    image: nginx:latest
创建资源
[root@master ~]# kubectl create -f nginxpod.yaml
namespace/dev created
pod/nginxpod created
查看资源
[root@master ~]#  kubectl get -f nginxpod.yaml
NAME            STATUS   AGE
namespace/dev   Active   18s

NAME            READY   STATUS    RESTARTS   AGE
pod/nginxpod    1/1     Running   0          17s
删除资源
[root@master ~]# kubectl delete -f nginxpod.yaml
namespace "dev" deleted
pod "nginxpod" deleted
声明式对象配置

kubectl apply -f nginx-pod.yaml

总结:
    其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)
    使用apply操作资源:
        如果资源不存在,就创建,相当于 kubectl create
        如果资源已存在,就更新,相当于 kubectl patch

kebectl在node节点上运行

只需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

scp -r HOME/.kube node1: HOME/

查看每种资源的可配置项

#小提示:
#   在这里,可通过一个命令来查看每种资源的可配置项
#   kubectl explain 资源类型         查看某种资源可以配置的一级属性
#   kubectl explain 资源类型.属性     查看属性的子属性
[root@k8s-master01 ~]# kubectl explain pod
KIND:     Pod
VERSION:  v1
FIELDS:
   apiVersion   <string>
   kind <string>
   metadata     <Object>
   spec <Object>
   status       <Object>

[root@k8s-master01 ~]# kubectl explain pod.metadata
KIND:     Pod
VERSION:  v1
RESOURCE: metadata <Object>
FIELDS:
   annotations  <map[string]string>
   clusterName  <string>
   creationTimestamp    <string>
   deletionGracePeriodSeconds   <integer>
   deletionTimestamp    <string>
   finalizers   <[]string>
   generateName <string>
   generation   <integer>
   labels       <map[string]string>
   managedFields        <[]Object>
   name <string>
   namespace    <string>
   ownerReferences      <[]Object>
   resourceVersion      <string>
   selfLink     <string>
   uid  <string>

推荐增删改查操作

  • 创建/更新资源 使用声明式对象配置 kubectl apply -f XXX.yaml
  • 删除资源 使用命令式对象配置 kubectl delete -f XXX.yaml
  • 查询资源 使用命令式对象管理 kubectl get(describe) 资源名称

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Polygon Miden zkRollup中的UTXO+账户混合状态模型

1. 引言 本文重点讨论Polygon Miden所设计的UTXO账户混合状态模型&#xff0c;以实现某些有趣的属性。 Miden的目标是&#xff1a;【即越具有隐私性&#xff0c;其可扩展性越好】 构建可扩展去中心化的rollup采用支持隐私的架构 Miden支持灵活的交易模式&#xff1a; 公开…

No134.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

零基础Python经验体验代码检查工具

作者&#xff1a;yd_257945187 原文链接&#xff1a;零基础Python经验体验代码检查工具-云社区-华为云 1 开发小白自述 年初&#xff0c;我开始从java语言转战Python语言的开发&#xff0c;对于零基础python经验的人来说&#xff0c;要开发出高质量且安全性能高的Python 代码…

ElasticSearch - 基于 docker 部署 es、kibana,配置中文分词器、扩展词词典、停用词词典

目录 一、ElasticSearch 部署 1.1、创建网络 1.2、加载镜像 1.3、运行 1.4、检查是否部署成功 二、部署 Kibana 2.1、加载镜像 2.2、运行 三、部署 IK 分词器 3.1、查看数据卷目录 3.2、上传分词器 3.3、重启容器 3.4、测试 3.4、扩展词词典 3.5、停用词词典 一…

贝锐蒲公英异地组网:无需专线,也能解决无公网固定IP问题

为了简化部署、运维实现更高的易用性&#xff0c;或是满足用户的特定需求&#xff0c;基于SD-WAN全自研的贝锐蒲公英异地组网拥有众多实用功能。这些功能涵盖网络、用户交互等诸多方面&#xff0c;包括&#xff1a;旁路组网模式、自定义网络出口/虚拟IP/DNS域名解析、WebVPN、企…

使用光纤激光切割机等激光切割设备时的一些小诀窍

光纤激光切割机极大地提高了钣金加工行业切割效果和生产效率。然而在我们对客户的回访调查中&#xff0c;发现客户普遍存在着对光纤激光切割机设备的保养维护意识不足的问题&#xff0c;这严重影响了设备的正常使用和使用寿命。 虽然激光切割机有日常的保养&#xff0c;但是也需…

leetcode215题快排

关于快排的两种写法为什么一个超时 一个很快的问题记录 快的写法&#xff1a; 超时的写法&#xff1a; 查看了一下超时的数据&#xff0c;是有很多相同的数字组成&#xff0c;个人觉得是因为超时的写法&#xff0c;再遇到相同的数字的时候&#xff0c;直接或者–&#xff0…

premiere 图片突出滑块效果

1 导入图片 2 复制图片 3 创建序列 4 序列 导入 图片和复制的图片 两个 v轨道 5 旧版标题 窗口 -> 基础图像 (查看是否勾选) 6 v 轨道 选择 复制的图片 -> 效果 -> 基础图形 -> 新建 -> 矩形 -> 变形 旋转 7 效果 -> 搜-> 轨道遮罩键 -> 拖入…

盛元广通畜牧实验室信息管理系统(LIMS)

盛元广通通过构建物联网畜牧实验室信息管理系统LIMS&#xff0c;将畜牧养殖生命周期生产业务一体化、降本增效、管理透明、柔性把握检测业务管理流程、从源头质量把关、多维度动物管理看板、成本核算自动化、移动化场景同步高效协同。帮助实验室及早识别和应对潜在的疾病威胁&a…

静态路由+BFD实例

项目拓扑与项目需求 项目需求 ① 主链路为电信&#xff0c;电信链路出故障时&#xff0c;业务数据流量切换到联通链路 实验步骤 步骤1&#xff1a;设备重命名以及IP地址的配置 设备 接口编号 IP地址 AR1 G0/0/0 10.0.13.1/24 G0/0/1 10.0.14.1/24 AR2 G0/0/0 10.0…

基于SpringBoot的古典舞在线交流平台的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 系统主界面 用户注册界面 论坛交流界面 课程详情界面 购物车界面 我的订单界面 管理员登录界面 会员用户管理界面 服饰管理界面 课程管理界面 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着互联网技术…

分布式操作系统

分布式操作系统属于多机操作系统&#xff0c;能够统一一套计算机集群&#xff0c;相比单机系统&#xff0c;分布式操作系统在管理计算机集群方面要简单很多。各种分布式的基础功能&#xff0c;都集中到分布式操作系统来实现&#xff0c;而不是单机系统的应用软件来实现&#xf…

Emmabuntüs Debian Edition 5 正式发布

导读来自 Emmabunts Collective 的 Patrick d’Emmabunts 近日向 9to5Linux.com 通报了 Emmabunts Debian Edition 5 1.00 的发布和全面可用性&#xff0c;该版本是用于翻新旧电脑的 GNU/Linux 发行版的最新稳定版本。 Emmabunts Debian Edition 5是在Emmabunts Debian Edition…

【模拟实现C语言库函数】string.h中的内存操作函数

本篇文章目录 相关文章1. 模拟 memcpy 内存拷贝2. 模拟 memmove 内存移动 相关文章 【C语言】数据在内存中是以什么顺序存储的&#xff1f;【C语言】整数在内存中如何存储&#xff1f;又是如何进行计算使用的&#xff1f;【C语言】利用void*进行泛型编程【C语言】4.指针类型部…

postgresql pgsql 连接池 pgBouncer(详细)

适用连接池可以有效的降低反复连接造成的损耗 2023.9.28更新&#xff0c;演示&#xff1a;1.20.1版本 没有安装pgsql的可以参考&#xff1a;pgsql编译安装 一、编译安装 包安装更简单&#xff0c;就是不能选版本 1.pgBouncer下载地址 链接&#xff1a;github项目地址 链接&a…

2023软件测试面试八股文大全(含答案)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化能力低&#xff0c;响应速度较慢 C/S响应速度快&#xff0c;安全性强&#xff0c;一般应用于局域网中&#xff0c…

java一体化智慧工地信息管理平台源码 智慧工地APP源码

智慧工地云平台是专为建筑施工领域所打造的一体化信息管理平台。通过大数据、云计算、人工智能、物联网和移动互联网等高科技技术手段&#xff0c;将施工区域各系统数据汇总&#xff0c;建立可视化数字工地。同时&#xff0c;围绕人、机、料、法、环等各方面关键因素&#xff0…

探索ClickHouse——连接Kafka和Clickhouse

安装Kafka 新增用户 sudo adduser kafka sudo adduser kafka sudo su -l kafka安装JDK sudo apt-get install openjdk-8-jre下载解压kafka 可以从https://downloads.apache.org/kafka/下找到希望安装的版本。需要注意的是&#xff0c;不要下载路径包含src的包&#xff0c;否…

QQ聊天记录文件怎么恢复?这3个方法亲测有效

QQ为用户提供了聊天、语音、视频、在线游戏、社交分享等丰富的功能&#xff0c;满足了用户的各种通讯以及娱乐需求。无论是现在还是过去&#xff0c;QQ仍然在我们的生活中扮演着重要的角色。 如果在使用QQ的过程中&#xff0c;发现文件过期或者被删除了该怎么办&#xff1f;qq…

480439-15-4,一种具有荧光单体的pH敏感性染料Fluorescein O-methacrylate

产品简介&#xff1a;荧光素O-甲基丙烯酸酯是一种具有荧光单体的pH敏感性染料。它可以通过490 nm的激发光谱和520 nm的发射光谱进行表征。它具有荧光素&#xff0c;其是一种负电荷最少的指示剂。它的特性包括生物相容性、无毒性&#xff0c;以及在水溶液中的良好分散性。 CAS号…