1.创建资源对象
根据YAML配置文件一次性创建Service和RC:
kubectl create -f my-service.yaml -f my-rc.yaml
根据目录下所有.yaml、.yml、.json文件的定义进行创建:
kubectl create -f <directory>
2.查看资源对象
查看所有Pod列表:
kubectl get pods -n namespace
#查看包含已经停止的pod
kubectl get pods --show-all -n namespace
#查看所有pod的详细信息
kubectl get pods -o wide
查看RC和Service列表:
kubectl get rc,service
3.描述资源对象
显示Node的详细信息:
kubectl describe nodes <node-name>
显示Pod的详细信息:
kubectl describe pods/<pod-name>
显示由RC管理的Pod的信息:
kubectl describe pods <rc-name>
4.删除资源对象
基于pod.yaml定义的名称删除Pod:
kubectl delete -f pod.yaml
删除所有包含某个Label的Pod和Service:
kubectl delete pods,services -l name=<label-name>
删除所有Pod:
kubectl delete pods --all
5.执行容器的命令
执行Pod的date命令,默认使用Pod中的第1个容器执行:
kubectl exec <pod-name> date
指定Pod中的某个容器执行date命令:
kubectl exec <pod-name> -c <container-name> date
通过bash获得Pod中某个容器的TTY,相当于登录容器:
kubectl exec -ti <pod-name> -c <container-name> /bin/bash
不加-c参数会到一个默认的容器
6.查看容器的日志
查看容器输出到stdout的日志:
kubectl logs <pod-name>
跟踪查看容器的日志,相当于tail -f命令的结果:
kubectl logs -f <pod-name> -c <container-name>
7.创建或更新资源对象
用法和kubectl create类似,逻辑稍有差异:如果目标资源对象不存在,则进行创建;否则进行更新,例如:
kubectl applf -f app.yaml
8.在线编辑运行中的资源对象
可以使用kubectl edit命令编辑运行中的资源对象,例如使用下面的命令编辑运行中的一个Deployment:
kubectl edit deploy nginx
在命令执行之后,会通过YAML格式展示该对象的定义和状态,用户可以对代码进行编辑和保存,从而完成对在线资源的直接修改。
9.将Pod的开放端口映射到本地
将集群上Pod的80端口映射到本地的8888端口,在浏览器http://127.0.0.1:8888中就能够访问到容器提供的服务了:
kubectl port-forward --address 0.0.0.0 pod/nginx-6ddbbc47fb-sdfcv 8888:80
10.在Pod和本地之间复制文件
把Pod上的/etc/fstab复制到本地的/tmp目录:
kubectl cp nginx-6ddbbc47fb-sfcv:/etc/fstb /tmp
11.资源对象的标签设置
为default namespace设置testing=true标签:
kubectl label namespaces default testing=true
12.检查可用的API资源类型列表
该命令经常用于检查特定类型的资源是否已经定义,列出所有资源对象类型:
kubectl api-resources
13.使用命令行插件
为了扩展kubectl的功能,Kubernetes从1.8版本开始引入插件机制,在1.14版本时达到稳定版。
用户自定义插件的可执行文件名需要以“kubectl-”开头,复制到$PATH中的某个目录(如/usr/local/bin),然后就可以通过kubectl 运行自定义插件了。例如,实现一个名为hello的插件,其功能为在屏幕上输出字符串“hello world”:
新建名为kubectl-hello的可执行脚本文件,其内容为
echo "hello world"
复制kubectl-hello文件到/usr/local/bin/目录下,就完成了安装插件的工作。
然后在kubectl命令后带上插件名称就能使用这个插件了:
#kubectl hello
hello world
使用kubectl plugin list命令可以查看当前系统中已安装的插件列表:
#kubectl plugin list
The fllowing kubectl-compatible plugins are available:
/usr/local/bin/kubectl-hello
/usr/local/bin/kubectl-foo
/usr/local/bin/kubectl-bar
更完整的插件开发示例可以从https://github.com/kubernetes/sample-cli-plugin找到。
14创建和查看configmap
$kubectl create -f cm-appconfigfiles.yaml
#kubectl get configmap cm-appconfigfiles
NAME DATA AGE
cm-appconfigfiles 2 14s
#kubectl describe configmap cm-appconfigfiles
Name: cm-appconfigfiles
Namespace: default
Labels: <none>
Annotations: <none>
Data
===
key-loggingproerties: 1809 bytes
key-serverxml: 1686 bytes
查看已经创建好的configmap的详细内容,可以看到两个配置文件的全文:
#kubectl get configmap cm-appconfigfiles -o yaml
15获取pod和node的资源使用信息
kubectl top nodes #获取nodes的cpu和memory信息
kubectl top pods #获取pods的cpu和memory信息