一 概述
[root@m ~]# kubectl --help
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
Basic Commands (Beginner):
create 从文件或标准输入创建资源。
expose 使用 replication controller, service, deployment 或者 pod 并暴露它
Kubernetes Service
run 在集群中运行一个指定的镜像
set 为 objects 设置一个指定的特征
Basic Commands (Intermediate):
explain 查看资源的文档
get 显示一个或更多 resources
edit 在服务器上编辑一个资源
delete 通过文件名、stdin、资源和名称或资源和标签选择器删除资源
Deploy Commands:
rollout 管理资源的rollout
scale 为 Deployment, ReplicaSet, Replication Controller 或者 Job 设置一个新的副本数量
autoscale 自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量
Cluster Management Commands:
certificate 修改 certificate 资源.
cluster-info 显示集群信息
top 显示资源(CPU/内存/存储)使用情况。
cordon 标记 node 为 unschedulable
uncordon 标记 node 为 schedulable
drain 污点节点准备维修
taint 更新一个或者多个 node 上的 taints
Troubleshooting and Debugging Commands:
describe 显示一个指定 resource 或者 group 的 resources 详情
logs 输出容器在 pod 中的日志
attach Attach 到一个运行中的 container
exec 在一个 container 中执行一个命令
port-forward 将一个或多个本地端口转发到一个pod
proxy 运行一个 proxy 到 Kubernetes API server
cp 复制 files 和 directories 到 containers 和从容器中复制 files 和 directories.
auth 检查授权
Advanced Commands:
diff 将实际版本与可能应用的版本进行比较
apply 通过文件名或标准输入流(stdin)对资源进行配置
patch 使用 strategic merge patch 更新一个资源的 field(s)
replace 通过 filename 或者 stdin替换一个资源
wait 实验性:在一个或多个资源上等待特定条件。
convert 在不同的 API versions 转换配置文件
kustomize 从目录或远程url构建kustomization目标。
Settings Commands:
label 更新在这个资源上的 labels
annotate 更新一个资源的注解
completion Output shell completion code for the specified shell (bash or zsh)
Other Commands:
api-resources 在服务器上打印支持的API资源
api-versions 在服务器上以“group/version”的形式打印支持的API版本
config 修改 kubeconfig 文件
plugin 提供与插件交互的实用程序。
version 输出 client 和 server 的版本信息
Usage:
kubectl [flags] [options]
使用“kubectl <command> --help”获取有关给定命令的更多信息。
使用“kubectl options”作为全局命令行选项列表(适用于所有命令)。
[root@m ~]#
二 常用命令使用说明
1,create
根据资源清单来创建资源,如果再次运行该命令,则会抛出错误,因为资源名称在名称空间中应该是唯一的。
[root@m nginx_pod]# kubectl create -f nginx_pod.yml
pod/nginx-pod created
[root@m nginx_pod]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 9s
[root@m nginx_pod]#
2,apply
将资源清单配置应用于资源。如果资源不存在,那么它将被创建。如果资源存在,则会更新。
kubectl apply -f nginx_pod.yml
3,delete
# 根据资源清单删除资源
kubectl delete -f nginx_pod.yml
# 删除所有pod
kubectl delete pods --all
# 根据pod名称删除指定的pod
kubectl delete pod pod名称
4,get
# 获取名称空间列表
kubectl get ns
# 获取指定名称空间下的pod
kubectl get pod -n kube-system
# 获取所有名称空间下的pod
kubectl get pod --all-namespaces
# 获取各种类型的资源
kubectl get ns [-o wide]
kubectl get svc [-o wide]
kubectl get deployment [-o wide]
kubectl get nodes [-o wide]
5,exec
exec命令同样类似于docker的exec命令,为在一个已经运行的容器中执行一条shell命令,如果一个pod容器中,有多个容器,需要使用-c选项指定容器。
kubectl exec pod名称 [-c 容器名称] [-n 名称空间] -it /bin/bash
6,cp
# 将容器内的文件复制到宿主机
kubectl cp pod名称:/容器内路径/xxx.log /宿主机路径/xxx.log
# 如果容器不在默认的名称空间下,pod中有多个容器,则需要指定名称空间和容器名称
kubectl cp -c 容器名称 名称空间/pod名称:/容器内路径/xxx.log /宿主机路径/xxx.log
# 将文件从宿主机复制到容器内部
kubectl cp /宿主机路径/xxx.log pod名称:/容器内路径/xxx.log
# 将文件夹复制到默认名称空间下指定pod名称的默认第1个容器中
kubectl cp /宿主机路径/文件夹 pod名称:/容器内路径/文件夹
# 将文件夹复制到默认名称空间下指定pod名称下指定容器中
kubectl cp /宿主机路径/文件夹 pod名称:/容器内路径/文件夹 -c 容器名称
# 将文件夹复制到指定名称空间指定pod指定容器中
kubectl cp /宿主机路径/文件夹 名称空间/pod名称:/容器内路径/文件夹 [-c 容器名称]
7,logs
kubectl logs [-f] [-p pod名称或type/name] [-c 容器名称]
8,describe
kubectl describe pod pod名称 [-n 名称空间]