Kubernetes命令行工具--kubectl管理
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,kubectl概述Kubectl是一个命令行界面,用于运行针对Kubernetes集群的命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命
千家信息网最后更新 2024年11月15日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安全错误
数据库的锁怎样保障安全
数据库 新增字段
山东机电软件开发批发
久晟网络技术公司
景漫网络技术工作室
河南数据软件开发过程检测中心
泽普县网络安全周
自学网络安全心得
数据库报表制作
瑞庭网络技术河北
抚州恩牛网络技术有限公司
现在网络安全专业好就业吗
数据库淮海工学院
宾川天气预报软件开发
软件开发绍兴
查数据库端口号
计算机网络技术是文科
数据库班级名称代码
数据库应用技术思政
DB数据库备份方法
军事通信网络技术心得体会
搜索什么可以打开数据库
甘肃网络技术开发采购
安全测试与软件开发的关系
编办网络安全应急保障制度
高铁列车数据库
做软件开发是种什么体验
提升数据库写入速度
云南霹雳网络技术有限公司视频
数据库应用技术思政
北京标准网络服务器机柜云空间