Kubernetes命令行工具--kubectl管理
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,kubectl概述Kubectl是一个命令行界面,用于运行针对Kubernetes集群的命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命
千家信息网最后更新 2025年12月02日Kubernetes命令行工具--kubectl管理
kubectl概述
Kubectl是一个命令行界面,用于运行针对Kubernetes集群的命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命令参数--kubeconfig来指定其他位置的kubeconfig文件。kubectl语法
1.使用以下语法kubectl从终端窗口运行命令:
kubectl [command] [TYPE] [NAME] [flags]2.其中command,TYPE,NAME,和flags分别是:
- command
指定要在一个或多个资源进行的操作,例如create,get,describe,delete。例如"kubectl get cs"。- TYPE
指定资源类型。资源类型不区分大小写,可以指定单数,复数或缩写形式。范例:
#以下命令产生相同的输出kubectl get pod pod1kubectl get pods pod1kubectl get po pod1- NAME
指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息,如"kubectl get pods"。在对多个资源执行操作时,我们可以按类型和名称指定每个资源,或指定一个或多个文件:
1.要按类型和名称指定资源:
- 如果资源类型相同,则对资源进行分组:
TYPE1 name1 name2 name<#>。范例:
kubectl get pod example-pod1 example-pod2- 分别指定多种资源类型:
TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>。范例:
kubectl get pod/example-pod1 replicationcontroller/example-rc12.要使用一个或多个文件指定资源:
-f file1 -f file2 -f file<#>#注意使用YAML而不是JSON,因为YAML往往更加用户友好,特别是对于配置文件。范例:
kubectl get pod -f ./pod.yaml- flags:
指定的可选标志,不过值得注意的是,使用命令行指定参数会覆盖默认值以及相关的环境变量。例如,我们可以使用-s或--server标志来指定Kubernetes API服务器的地址和端口。kubectl管理命令
| 类型 | 命令 | 描述 |
|---|---|---|
| 基础命令 | create | 通过文件名或标准输入创建资源 |
| expose | 将一个资源公开为一个新的Service | |
| run | 在集群中运行一个特定的镜像 | |
| set | 在对象上设置特定的功能 | |
| get | 显示一个或多个资源 | |
| explain | 文档参考资料 | |
| edit | 使用默认的编辑器编辑一个资源 | |
| delete | 通过文件名、标准输入、资源名称或标签选择器来删除资源 | |
| 部署命令 | rollout | 管理资源的发布 |
| rolling-update | 对给定的复制控制器滚动更新 | |
| scale | 扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Job | |
| autoscale | 创建一个自动选择扩容或缩容并设置Pod数量 | |
| 集群管理命令 | certificate | 修改证书资源 |
| cluster-info | 显示集群信息 | |
| top | 显示资源(CPU/Memory/Storage)使用。需要Heapster运行 | |
| cordon | 标记节点不可调度 | |
| uncordon | 标记节点可调度 | |
| drain | 驱逐节点上的应用,准备下线维护 | |
| taint | 修改节点taint标记 | |
| 调试命令 | describe | 显示特定资源或资源组的详细信息 |
| logs | 在一个Pod中打印一个容器日志。如果Pod只有一个容器,容器名称是可选的 | |
| attach | 附加到一个运行的容器 | |
| exec | 执行命令到容器 | |
| port-forward | 转发一个或多个本地端口到一个pod | |
| proxy | 运行一个proxy到Kubernetes API server | |
| cp | 拷贝文件或目录到容器中 | |
| auth | 检查授权 | |
| 高级命令 | apply | 通过文件名或标准输入对资源应用配置 |
| patch | 使用补丁修改、更新资源的字段 | |
| replace | 通过文件名或标准输入替换一个资源 | |
| convert | 不同的API版本之间转换配置文件 | |
| 设置命令 | label | 更新资源上的标签 |
| annotate | 更新资源上的注释 | |
| completion | 用于实现kubectl工具自动补全 | |
| 其他命令 | api-versions | 打印受支持的API版本 |
| config | 修改kubeconfig文件(用于访问API,比如配置认证信息) | |
| help | 所有命令帮助 | |
| plugin | 运行一个命令行插件 |
create与apply命令的异同
- 通过YAML文件建立
kubectl create -f FILENAME [options]- 通过YAML文件升级deployment
kubectl apply -f FILENAME- 相同点
如果yaml文件中的kind值为deployment,那么上面这两个命令都可以创建一个deployment,生成相应数量的pod- 不同点
create命令:是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的apply命令:根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性实例演示:
- 项目的生命周期
创建->发布->更新->回滚->删除
1.创建nginx
#常用语法:kubectl run NAME --image=image [--env="key=value"参数] [--port=port端口] [--replicas=replicas副本集] [--dry-run=bool状态] [--overrides=inline-json] [--command命令] -- [COMMAND] [args...] [options]`kubectl run nginx-deployment --image=nginx --port=80 --replicas=3#查看pod节点kubectl get pods2.发布nginx service提供负载均衡的功能
#常用语法:kubectl expose (-f FILENAME | TYPE NAME) [--port=port群集之间内部通信的端口] [--protocol=TCP|UDP|SCTP] [--target-port对外暴露的端口=number-or-name] [--name=name指定名称] [--external-ip=external-ip-of-service] [--type=type指定类型] [options]kubectl expose deployment nginx-deployment --port=80 --target-port=80 --name=nginx-deployment-service --type=NodePort#查看服务发布,此处svc位service服务组件的缩写kubectl get pods,svc#查看后端关联的节点kubectl get endpoints#查看网络状态详细信息kubectl get pods -o wide#查看服务的端口kubectl get svc#kubernetes里kube-proxy支持三种模式,在v1.8之前我们使用的是iptables 以及 userspace两种模式,在kubernetes 1.8之后引入了ipvs模式#node节点安装ipvsadmin工具查看服务端口yum install ipvsadm -yipvsadm -L -n#使用工具查看,可见调度算法为rr轮询模式#master端查看访问日志kubectl get pods3.更新nginx 为1.14版本
- 浏览器重新加载刷新页面查看nginx版本信息
查看nginx版本步骤:F12打开开发者选项->F5刷新访问->找到network ->点击name ->找到headers头部信息kubectl set image deployment/nginx-deployment nginx-deployment=nginx:1.144.回滚nginx
#查看历史版本kubectl rollout history deployment/nginx-deployment#执行回滚到上一次版本kubectl rollout undo deployment/nginx-deployment#检查回滚状态kubectl rollout status deployment/nginx-deployment5.删除nginx
#删除deploymentkubectl delete deployment/nginx-deployment#删除服务SVCkubectl get svc6.其他命令
- 查看具体资源的详细信息
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]- 查看deployment资源
kubectl describe deployment/nginx-deployment- 查看资源对象简写
kubectl api-resources- 进入相应pod中
kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options]- 查看生成的YAML格式文件
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml- 查看生成的JSON格式文件
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json- 生成YAML 、 JSON文件导出
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json(yaml) > test.json(yaml)- 将现有资源进行导出
kubectl get svc/nginx-svc --export -o yaml > nginx-svc.yaml- 测试命令正确性,不执行(类似shell脚本中的sh -n)
kubectl run nginx --image=nginx --port=80 --replicas=2 --dry-run谢谢阅读!
资源
命令
文件
信息
名称
类型
版本
端口
节点
运行
配置
多个
容器
更新
服务
生成
文件名
标准
模式
范例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发具体步骤如何开发的
上海提供网络技术平均价格
北京软件开发人员生话状况
开展网络安全技术应用试点示范工
全国公民信息系统数据库
融汇国际交易软件开发商是谁
永辉软件开发怎么样
lsh数据库
硕士研究生网络安全专业课
电脑服务器密码
cod8 服务器
嵌入式软件开发之路学习
我的世界如何管理一个服务器
独立服务器搭建vps
网络技术服务合同特点
数据库表的实现过程
网络安全得注意什么
路由器拨号显示服务器不响应
数据库别名
服务器部署规范
职高网络技术2017年高考卷
计算机网络技术的填空题
服务器怎么设计网卡
上海交通大学网络安全考研人数
软件开发效率如何得到提高
湖北调度服务器厂家云主机
ibm服务器开机左上角一直闪
学习完软件开发之后学什么
武汉鲲鹏服务器厂家供应
云服务器如何添加快照