Kubernetes命令行工具--kubectl管理
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,kubectl概述Kubectl是一个命令行界面,用于运行针对Kubernetes集群的命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命
千家信息网最后更新 2025年02月12日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-rc1
2.要使用一个或多个文件指定资源:
-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 pods
2.发布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 pods
3.更新nginx 为1.14版本
- 浏览器重新加载刷新页面查看nginx版本信息
查看nginx版本步骤:F12打开开发者选项->F5刷新访问->找到network ->点击name ->找到headers头部信息
kubectl set image deployment/nginx-deployment nginx-deployment=nginx:1.14
4.回滚nginx
#查看历史版本kubectl rollout history deployment/nginx-deployment#执行回滚到上一次版本kubectl rollout undo deployment/nginx-deployment#检查回滚状态kubectl rollout status deployment/nginx-deployment
5.删除nginx
#删除deploymentkubectl delete deployment/nginx-deployment#删除服务SVCkubectl get svc
6.其他命令
- 查看具体资源的详细信息
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安全错误
数据库的锁怎样保障安全
汕头软件开发去哪
access数据库中列报表
制造执行系统软件开发服务商
软件开发免费课程
数据库数据存储路径修改
网络安全知识提升学到了什么
隔热计算书服务器出现意外情况
软件开发在家可以做吗
网络安全通报中心官网
计算机三级网络技术老师
快典网络技术有限公司
数据库怎么显示记录
游戏开封软件开发
文科大专女生学计算机网络技术
阿里云服务器配置选择
数据库处理技术概念
微信服务器保存用户聊天
数据库3415错误
花样年华服务器
软件开发四大变量
云霄县安博网络技术工作室
微盘交易系统软件开发
江苏办公系统软件开发公司
软件开发注册哪个商标类别
一万并发量的服务器配置
php 操作两个数据库
各网络安全公司优缺点
socolar平台是型数据库
软件开发工作量计算人月数
sql数据库怎么显示颜色