基本命令初级
命令 |
语法 |
说明 |
create |
kubectl create -f filename [flags] |
从配置文件或 stdin 中创建资源对象 |
expose |
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] |
将已经存在的一个 rc,service,deployment 或 pod 暴露为一个新的 service |
set |
kubectl set SUBCOMMAND [options] |
设置资源对象的某个特定信息 |
run |
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options] |
基于一个镜像在 kubernetes 集群上启动一个 deployment |
基本命令中级
命令 |
语法 |
说明 |
explain |
kubectl explain [--include-extended-apis=true] [--recursive=false] [flags] |
对资源对象属性的详细说明 |
get |
kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns-file|custom-columns|wide] (type[.version][.group] [name | -l label] | type[.version][.group]/name ...) [flags] [options] |
显示一个或多个资源对象的该要信息 -l :指定查看的标签 如:-l key=value
--show-labels : 显示标签
-A/--all-namespace : 所有 namespace 下的资源
-w 动态查看资源状态
--kubeconfig : 指定使用的配置文件,默认~/.kube/config
|
delete |
kubectl delete [-f filename | type name | -l label] [flags] |
从配置文件,stdin,资源名称或label selector 删除资源对象 |
edit |
kubectl edit [-f filename | type name | type/name] [flags] |
编辑资源对象的属性,在线更新 |
扩展命令
命令 |
语法 |
说明 |
rollout |
kubectl rollout SUBCOMMAND [options] |
对 deployment 进行管理,可用操作包括:history,pause,resume,undo,status |
scale |
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME) [options] |
扩容/缩容一个 deployment,replicaSet,RC 或 job 中的 pod 的数量 |
autoscale |
kubectl antoscale [-f filename | type name | type/name] |
对 deployment,replicaSet 或 replicationController 进行水平自动扩容和缩容的设置 |
集群管理命令
命令 |
语法 |
说明 |
certificate |
kubectl certificate SUBCOMMAND [options] |
修改自签证书 |
cluster-info |
kubectl cluster-info [flags] |
显示集群 master 和内置服务的信息 |
top |
kubectl top node |
查看 node 或 pod 的资源使用情况,需要在集群中运行 metics server |
cordon |
kubectl cordon node [flags] |
将 node 标记 node 为 unschedulable |
uncordon |
kubectl uncordon node |
标记 node 为 schedulable |
drain |
kubectl drain node [flags] |
首先将 node 设置为 unscheduled,然后删除在该 node 上运行的所有 pod,但不会删除由 api server 管理的 pod |
taint |
kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options] |
设置 node 的 taint 信息,用于将特定的 pod 调度到特定的 node 的操作 |
故障排除和调试命令
命令 |
语法 |
说明 |
describe |
kubectl describe [-f filename | type name] [flags] |
描述一个或多个资源对象的详细信息 |
logs |
kubectl logs pod [-c container] [--follow] [flags] |
打印一个容器的日志 |
attach |
kubectl attach POD -c container [flags] |
附着到一个正在允许的容器上 |
exec |
kubectl exec (pod | type/name) [-c container] [flags] -- command [args...] [options] |
执行一个容器中的命令
-i : 交互模式
-t : 为终端方式 -c :指定进去到 pod 中的那个容器里面
-- command :要运行的命令,例如:-- /bin/bash
|
port-forward |
kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] |
将本机的某个端口映射到 pod 的端口号,通常用于测试 |
proxy |
kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [options] |
将本机某个端口号映射到 api server 上 |
auth |
kubectl auth [flags] [options] |
检查 RBAC 权限 |
cp |
kubectl cp <file-spec-src> <file-spec-dest> [options] |
复制 files 和 directories 到 containers 和从容器中复制 files 和 directories |
高级命令
命令 |
语法 |
说明 |
diff |
kubectl diff -f filename [options] |
查看配置文件与当前系统中正在运行的资源对象的差异 |
apply |
kubectl apply -f filename [flags] |
从配置文件或 stdin 中对资源对象进行配置更新 |
patch |
kubectl patch (-f filename | type name) [-p patch|--patch-file file] [options] |
以 merge 形式对资源的某部分字段的值进行修改 |
replace |
kubectl replace -f filename [flags] |
从配置文件或 stdin 替换资源对象 |
设置命令
命令 |
语法 |
说明 |
label |
kubectl label [--overwrite] (-f filename | type name) key_1=val_1 ... key_n=val_n [--resource-version=version] [options] |
设置或更新这个资源的 label
|
annotate |
kubectl annotate [-f filename | type name | type/name] key1=value1,key2=value2 |
添加或更新资源对象的 annotation 信息 |
completion |
kubectl completion shell [flags] |
输出 shell 命令的执行结果 |
其他命令
命令 |
语法 |
说明 |
api-version |
kubectl api-version [flags] |
列出当前系统支持的 api 版本列表,格式为"group/version" |
api-resources |
kubectl |
列出 api 资源 |
config |
kubectl config SUBCOMMAND [flags] |
修改 kubeconfig 文件 |
plugin |
kubectl plugin [flags] [options] |
在 kubectl 命令行适用用户自定义的插件 |
version |
kubectl version |
查看版本信息 |
-o
输出格式参数说明
在 get
等命令中会用到 -o
输出格式 |
说明 |
-o=custom-columns=<spec> |
自定义列名进行输出,以逗号分割 |
-o=custom-columns-file=<filename> |
从文件中获取自定义列名进行输出 |
-o=json |
以 json 格式输出 |
-o=jsonpath=<template> |
输出 jsonpath 表达式定义的字段信息 |
-o=jsonpath-file=<filename> |
商促局 jsonpath 表达式定义的字段信息,来源于文件 |
-o=name |
仅输出资源对象的名称 |
-o=wide |
输出额外信息,对于 pod 将输出 pod 所在 node 名 |
-o=yaml |
以 yaml 格式输出内容 |
常用命令汇总
关于 pod 的
kubectl get pods -l key-value
root@master:~/k8s# kubectl get pods -A -L k8s-app
NAMESPACE NAME READY STATUS RESTARTS AGE K8S-APP
kube-system calico-kube-controllers-6744f6b6d5-hjwqp 1/1 Running 0 21h calico-kube-controllers
kube-system calico-node-9fqfg 1/1 Running 0 21h calico-node
kube-system calico-node-hv2tf 1/1 Running 0 21h calico-node
kube-system calico-node-ts6hs 1/1 Running 0 21h calico-node
kube-system coredns-7f8cbcb969-9j5v6 1/1 Running 0 21h kube-dns
kube-system coredns-7f8cbcb969-vnz5h 1/1 Running 0 21h kube-dns
kubectl get pods -o wide
kubectl get pods -n xxxx
kubectl label pods xxx key=value
kubectl get pods --show-labels
kubectl describe pods xxx
kubectl exec -it pod名 -c 容器名 -- /bin/bash
kubectl delete pods xxx
kubectl delete -f xxx.yaml
kubectl get pods xxx -o yaml
关于 deployment 的
kubectl describe deploy xxx
kubectl rollout history deployment xxx
kubectl rollout undo deployment/xxx --to-revision=版本号
kubectl patch deployment xxx -p '{"spec":{"strategy":{"rollingUpdate": {"maxSurge":1,"maxUnavailable":1}}}}'
- 修改 deployment pod 中某个容器的镜像
kubectl set image deployment deployment名 容器名=镜像地址 -n 命名空间
kubectl rollout pause deployment deployment名 -n 命名空间
kubectl rollout resume deployment deployment名 -n 命名空间
关于 service
查看 service
kubectl get svc
查看 service 详情
kubectl describe svc xxx
关于 node 的
klubectl get nodes --show-lables
kubectl label nodes xxx key=value
kubectl label nodes xxx key-
kubectl taint nodes 节点名 key=value
例子
kubectl taint nodes 节点名 node-aaa=production:NoSchedule
详情中
Taints: nodeaaa=production:NoSchedule
命名空间
kubectl get ns
kubectl create ns xxx
pv 和 pvc 相关命令
查看 pv 或 pvc
kubectl get pv/pvc
ConfigMap 相关命令
kubectl get cm
kubectl describe cm xxx
- 创建
key-value
方式 ConfigMap
# --from-literal 添加 key=value 参数
kubectl create configmap 名字 --from-literal=键=值 --from-literal=键2=值2
kubectl create configmap 名字 --from-file=键=配置文件1 --from-file=键2=配置文件2
或
这样 key 就是文件名
kubectl create configmap 名字 --from-file=配置文件1
这样 key 就是文件名
kubectl create configmap 名字 --from-file=目录
Secret 相关命令
kubectl get secret
kubectl describe secret xxx
- 创建
generic
形式的。伪加密通过 base64 decode
可以解密
kubectl create secret generic 名字 --from-literal=键=值 --from-literal=键2=值2
Role ClusterRole 相关命令
kubectl get role/clusterrole
kubectl describe role/clusterrole xxx
在 命名空间
中创建 rolebinding名
,将 用户名
和 clusterrole名字
进行绑定。
这里的 --user 是 kubectl 客户端的用户
kubectl create rolebinding rolebinding名 --clusterrole=clusterrole名字 --user=用户名 --namespace=命名空间
在 命名空间a
下创建 rolebinding名字
,将 命名空间
下的 :ServiceAccount账户
绑定在 clusterrole名字
上
kubctl create rolebinding rolebinding名字 --clusterrole=clusterrole名字 --serviceaccount=命名空间:ServiceAccount账户 --namespace=命名空间a
创建 clusterrolebinding名
,将 用户名
与 clusterrole名
进行绑定
这里的 --user 是 kubectl 客户端的用户
kubectl create clusterrolebinding clusterrolebinding名 --clusterrole=clusterrole名 --user=用户名
创建 clusterrolebinding名
,将 ServiceAccount账户
与 clusterrole名
进行绑定
kubectl create clusterrolebinding clusterrolebinding名 --clusterrole=clusterrole名 --serviceaccount=ServiceAccount账户
创建 kubectl 客户端用户
私钥
umask 077; openssl genrsa -out xxx.key 2048
请求证书
openssl req -new -key xxx.key -out xxx.csr -subj "/CN=xxx"
生成一个证书
openssl x509 -req -in xxx.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out xxx.crt -days 3650
- kubectl 下新增用户和配置
kube/config
kubectl config set-credentials xxx --client-certificate=./xxx.crt --client-key=./xxx.key --embed-certs=true
在 kubeconfig下新增加一个 xxx 这个账号
kubectl config set-context xxx@kubernetes --cluster=kubernetes --user=xxx
- 切换账号
这时的账号是没有任何权限的需要使用 rolebinding 等绑定权限
这个账号可以和操作系统新增的账户联合使用,修改操作系统的新增账户的 ~/.kube/config
为 kubectl 新增的 xxx
配置即可
kubectl config use-context xxx@kubernetes
其他
kubectl config view
kubectl logs xxx
kubectl get resourcequota -n xxx
kubect get 资源类型 -w
- 查看 api
api 组成 apiGroup/apiVersion
kubectl api-versions
网友评论