【k8s】kubectl命令详解
文章目录
- 命令行工具 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: busyboximage: busyboxargs:- sleep- "1000000"
---
apiVersion: v1
kind: Pod
metadata:name: busybox-sleep-less
spec:containers:- name: busyboximage: busyboxargs:- 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、存储等各种资源进行操作
资源管理介绍
-
k8s本质就是一个集群系统,用户在集群中部署各种服务
部署服务就是在k8s集群中,运行一个个的容器,并将制定的程序跑在容器内部
-
k8s的最小管理单元是pod而不是容器,所以只能将容器放在pod中
而k8s通常不会直接去管理pod,而是通过pod管理器来管理pod的
-
如何访问pod的服务呢?k8s提供了service资源实现这个功能
-
当然了,为了确保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命令查看常用资源如下:
集群级别资源 nodes no 集群组成部分 namespaces ns 隔离Pod pod资源 pods po 装载容器 pod资源控制器 replicationcontrollers rc 控制pod资源 replicasets rs 控制pod资源 deployments deploy 控制pod资源 daemonsets ds 控制pod资源 jobs 控制pod资源 cronjobs cj 控制pod资源 horizontalpodautoscalers hpa 控制pod资源 statefulsets sts 控制pod资源 服务发现资源 services svc 统一pod对外接口 ingress ing 统一pod对外接口 存储资源 volumeattachments 存储 persistentvolumes pv 存储 persistentvolumeclaims pvc 存储 配置资源 configmaps cm 配置 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的数量 高级命令 apply rc 通过文件对资源进行配置 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: nginxpodnamespace: dev
spec:containers:- name: nginx-containersimage: 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 18sNAME 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) 资源名称
相关文章:
【k8s】kubectl命令详解
文章目录 命令行工具 kubectl在slave下配置kubectl资源操作创建对象 API概述类型访问控制认证授权 废弃API说明 资源管理资源管理介绍资源管理方式命令式对象管理命令式对象配置创建yaml文件创建资源查看资源删除资源 声明式对象配置 kebectl在node节点上运行查看每种资源的可配…...
Centos 7 部署SVN服务器
一、安装SVN 1、安装Subversion sudo yum -y install subversion2、验证是否安装成功(查看svn版本号) svnserve --version二、创建版本库 1、先建立目录,目录位置可修改 mkdir -p /var/svn cd /var/svn2、创建版本库,添加权限…...
SEO方案尝试--Nuxtjs项目基础配置
Nuxtjs 最新版 Nuxt3 项目配置 安装nuxtjs 最新版 Nuxt3 参考官网安装安装插件安装ElementPlus页面怎么跳转,路由怎么实现404页面该怎么配置配置 网页的title 安装nuxtjs 最新版 Nuxt3 参考官网安装 安装插件 安装ElementPlus 安装 Element Plus 和图标库 # 首先&…...
【算法分析与设计】动态规划(上)
目录 一、学习要点二、算法总体思想三、动态规划基本步骤四、矩阵连乘问题4.1 完全加括号的矩阵连乘积4.2 穷举法4.3 动态规划4.3.1 分析最优解的结构4.3.2 建立递归关系4.3.3 计算最优值4.3.4 用动态规划法求最优解 五、动态规划算法的基本要素5.1 最优子结构5.2 重叠子问题5.…...
Java多线程篇(6)——AQS之ReentrantLock
文章目录 1、管程2、AQS3、ReentrantLock3.1、lock/unlock3.1.1、lock3.1.2、unlock 3.2、一些思考 1、管程 什么是管程? 管理协调多个线程对共享资源的访问,是一种高级的同步机制。 有哪些管程模型? hansen:唤醒其他线程的代码…...
【计算机网络】IP协议第二讲(Mac帧、IP地址、碰撞检测、ARP协议介绍)
IP协议第二讲 1.IP和Mac帧2.碰撞检测2.1介绍2.2如何减少碰撞发生2.3MTU2.4一些补充 3.ARP协议3.1协议介绍3.2报文格式分析 1.IP和Mac帧 IP(Internet Protocol)和MAC(Media Access Control)帧是计算机网络中两个不同层次的概念&am…...
TouchGFX界面开发 | 按钮控件应用示例
按钮控件应用示例 按钮是最常见的部件之一,有了按钮就可以点击,从而响应事件,达到人机交互的目的。TouchGFX Designer内置了七种按钮部件: 下压按钮:能够在被释放时发送回调,按下和释放状态都关联了图像标…...
BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
BSVD是来自香港科技大学的一篇比较新的视频去噪论文,经实践,去噪效果不错,在这里分享一下对这篇论文的理解。 论文地址:https://arxiv.org/abs/2207.06937 代码地址:GitHub - ChenyangQiQi/BSVD: [ACM MM 2022] Real…...
共同见证丨酷雷曼武汉运营中心成立2周年
酷雷曼武汉运营中心2周年 全国合作商齐贺武汉公司2周年庆 2021年 作为酷雷曼辐射全国版图的又一重要据点 酷雷曼武汉运营中心 在“中国光谷”正式成立 沉浸式参观酷雷曼武汉公司 2年时间 尽管历经诸多客观因素的挑战 但后浪扬帆,依然交出了不斐的成绩 解决…...
一种单键开关机电路图
我们设计产品时,通常需要设计单键开关机功能。 单键开关机,通常需要单片机的两个IO完成,一个IO用于保持开机状态。另外,一个IO用于判定关机状态。 下面就是一种单键开关机电路原理图: 此单键开关电路已经在S2W-M02、S2…...
设计模式2、抽象工厂模式 Abstract Factory
解释说明:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 简言之,一个工厂可以提供创建多种相关产品的接口,而无需像工厂方法一样,为每一个产品都提供一个具体工厂 抽象工厂(Abstra…...
C++ 32盏灯,利用进制和 与 或 进行设计
一共32盏灯,设计一个灯光控制系统,其中 台球部8盏灯 桌游区8盏灯 酒吧区8盏灯 休息区8盏灯 满足以下功能 1、能够独立控制每一盏灯 2、能够一次性打开或关闭一个区域的全部灯光 3、能够获取各个区域的灯光打开关闭情况 4、能够一次性关闭打开的灯&#x…...
Ffmpeg-(1)-安装:ubuntu系统安装Ffmpeg应用
1、下载源码压缩包 https://ffmpeg.org/download.html 点击Download Source Code下载即可 解压: tar -xvjf ffmpeg-snapshot.tar.bz2 得到:ffmpeg目录 cd ffmpeg 或者:直接下 wget http://www.ffmpeg.org/releases/ffmpeg-5.1.tar.gztar -zx…...
系统集成|第十一章(笔记)
目录 第十一章 项目人力资源管理11.1 项目人力资源管理的定义及有关概念11.2 主要过程11.2.1 编制项目人力资源管理计划11.2.2 组建项目团队11.2.3 建设项目团队11.2.4 管理项目团队 11.3 现代激励理论11.4 项目经理所需具备的影响力11.5 常见问题 上篇:第十章、质量…...
二叉树题目:二叉树剪枝
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树剪枝 出处:814. 二叉树剪枝 难度 4 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root,返回移除了所有…...
JAVA中使用CompletableFuture进行异步编程
JAVA中使用CompletableFuture进行异步编程 1、什么是CompletableFuture CompletableFuture 是 JDK8 提供的 Future 增强类,CompletableFuture 异步任务执行线程池,默认是把异步任 务都放在 ForkJoinPool 中执行。 在这种方式中,主线程不会…...
uniapp:配置动态接口域名,根据图片访问速度,选择最快的接口
common.js // 动态测速选择的域名 // h5直接返回默认第一个域名 // vue文件用到域名的话用this.$baseURL let domains [{uri:192.168.31.215:9523, speed:0},{uri:api.ceshi.org, speed:0}, ]export const protocol {api: http://,//本地// api: https://api.,//正式h5Url: h…...
Lambda表达式常见用法(提高效率神器)
Java8中一个非常重要的特性就是Lambda表达式,我们可以把它看成是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,一定程度上可以使代码看起来更加简洁。 其实以上都不重要,重要的是能够提高我的开发效率…...
2023旷视自驾感知算法暑期实习一面
来源:投稿 作者:LSC 编辑:学姐 1. 问下项目,问下我的情况 2. 是否了解最新的BEV算法,讲一下 3. 是否了解三维重建 4. 考察相机坐标系的转换 5. 手撕代码,翻车了,不考leetcode,考…...
Python3 如何实现 websocket 服务?
Python 实现 websocket 服务很简单,有很多的三方包可以用,我从网上大概找到三种常用的包:websocket、websockets、Flask-Sockets。 但这些包很多都“年久失修”, 比如 websocket 在 2010 年就不维护了。 而 Flask-Sockets 也在 2…...
技术方案:QuPath图像通道自动化复制与批量处理高效方案
技术方案:QuPath图像通道自动化复制与批量处理高效方案 【免费下载链接】qupath QuPath - Open-source bioimage analysis for research 项目地址: https://gitcode.com/gh_mirrors/qu/qupath 在生物医学图像分析领域,多通道图像处理是病理学研究…...
基于WebGPU的浏览器端大模型本地部署:ChatLLM-Web项目实战解析
1. 项目概述:在浏览器里跑大模型,到底有多酷?如果你和我一样,对ChatGPT这类大语言模型(LLM)既着迷又有点“隐私焦虑”——总担心自己的对话数据在云端服务器上“裸奔”,那今天聊的这个项目绝对会…...
从服务端到登录器:《传奇世界》单机架设全流程拆解与工具选择指南(AFT/彩虹/凤凰引擎对比)
从服务端到登录器:《传奇世界》单机架设全流程拆解与工具选择指南 在经典网游《传奇世界》的爱好者圈子里,单机架设一直是技术玩家热衷探索的领域。不同于简单的游戏体验,搭建一个完整的单机环境意味着对游戏架构的深度理解和技术掌控。本文将…...
【ElevenLabs企业级接入白皮书】:基于17个生产环境案例验证的鉴权体系重构、多租户语音隔离与GDPR合规审计清单
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs企业级接入的演进动因与白皮书方法论 企业语音合成需求正从“能发声”跃迁至“有角色、可治理、可审计、可集成”。ElevenLabs 企业级 API 的演进并非单纯性能叠加,而是响应 GDPR…...
ClawShelf:打造精准可控的本地媒体库元数据管理方案
1. 项目概述:一个为极客打造的本地媒体资产管理利器如果你和我一样,是个喜欢折腾本地影音库、又对现有媒体管理工具(比如Plex、Jellyfin的刮削器)的识别准确率或自定义能力感到不满的资深玩家,那么你很可能已经对“Cla…...
基于Go与K8s Client-go实现多租户应用一键部署API服务
1. 项目概述与核心价值最近在搞一个内部工具平台,需要为每个新入职的同事快速部署一套独立的 Copaw 应用实例。Copaw 是我们团队基于agentscope/copaw镜像开发的一个内部辅助工具,每个开发者都需要一个专属的运行环境来处理自己的任务。手动去 K8s 里敲k…...
工业传动避坑:3 个皮带张力调节技巧,杜绝早期失效
工业传动避坑:3 个皮带张力调节技巧,杜绝早期失效在工业传动系统运维中,盖茨同步带、工业皮带的早期失效是高频痛点——不少工程师频繁更换皮带,却始终无法解决根本问题,反而增加运维成本。事实上,90%以上的…...
量子退火在锂离子电池材料优化中的应用与原理
1. 量子退火技术原理与材料优化应用概述量子退火(Quantum Annealing)是一种基于量子力学原理的优化算法,它通过模拟量子系统的绝热演化过程来寻找复杂问题的全局最优解。与传统模拟退火算法相比,量子退火利用量子隧穿效应而非热涨…...
Rust GraphQL实战:async-graphql深度解析
Rust GraphQL实战:async-graphql深度解析 引言 在Rust开发中,GraphQL是构建灵活API的重要技术。作为一名从Python转向Rust的后端开发者,我深刻体会到async-graphql在构建GraphQL服务方面的优势。async-graphql提供了类型安全的Schema定义和异…...
Ubuntu服务器性能检测工具NetData安装
1. NetData安装 打开Ubuntu终端并输入以下指令: $ bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)中途会提示安装文件将为占用磁盘空间,是否继续(Y/N),输入Y即可,安装完成后的截图如下…...
