K8S(2):基础命令

214 阅读3分钟

kubectl命令行管理工具

kubectl --help 查看帮助信息

kubectl create --help 查看create命令帮助信息

命令 描述
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 运行一个命令行插件
version 打印客户端和服务版本信息

基本命令:发布、回滚(示例)

1、创建
 kubectl create deployment web --image=192.168.188.50/library/java-demo:master-11
kubectl get deploy,pods

2、发布
kubectl expose deployment web --port=80 --target-port=8080 --name=web-service --type=NodePort
kubectl get service

3、模拟升级
kubectl set image deployment web java-demo=tomcat --record

4、回滚
kubectl rollout history deployment/web  # 查看发布记录
kubectl rollout undo deployment/web   # 回滚最新版本
kubectl rollout undo deployment/web --to-revision=1  # 回滚指定版本

5、扩容
kubectl scale  --replicas=3 deployment/web

6、删除
kubectl delete deploy/web
kubectl delete svc/web

YAML内容解析

具体字段意义:

apiVersion API版本
kind 资源类型
metadata 资源元数据
spec 资源规格
replicas 副本数量
selector 标签选择器
template Pod模板
metadata Pod元数据
spec Pod规格
containers 容器配置

几个技巧,帮助快速上手。

  • 用run命令生成部署模板

    
    kubectl create deployment nginx --image=nginx:1.14 -o yaml --dry-run> my-deploy.yaml 
    
    
  • 用get命令将已有部署的应用yaml导出

    kubectl get my-deploy/nginx -o=yaml --export  > my-deploy.yaml
    
  • 如果某个字段单词不记得了,可以通过explain查看更详细的帮助文档获得

    kubectl explain pods.spec.containers