1、创建资源对象
下面的命令分别创建了名为nginx-deploy的Deployment控制器资源对象,以及名为nginx-svc的service对象:
$kubectl run nginx-deploy --image=nginx:1.180 --replicas=2 $kubectl expose deployment/nginx --name=nginx=svc --port=80
也可以根据资源清单创建资源对象,即命令式对象配置文件,例如假设定义了Deployment 对象的nginx-deploy.yaml,和定义了Service对象的nginx-svc.yaml文件,使用kubectl create命令即可进行基于命令式对象配置文件的创建操作:
kubectl create -f nginx-deploy.yaml -f nginx-svc.yaml
甚至还可以将创建交由kubectl自行确定,用户只需要声明期望的状态,这种方式称为生命式对象创建。使用kubectl apply命令可以实现声明式配置。
kubectl apply -f nginx-deploy.yaml -f nginx-svc.yaml
2、查看资源对象
(1)列出系统上所有的NameSpace资源对象
kubectl get namespace
(2)列出默认命名空间内的所有Pod和Service对象,并输出额外信息
kubectl get pods,services -o wide
Kubernetes系统的大部分资源都隶属于某个命名空间,默认的命名空间为default,如果获取指定命名空间中的资源对象需要使用-n或者--namespace指明其名称,例如列出kube-namespace命名空间中拥有k8s-app标签名称的所有pod对象
kubectl get pods -l k8s-app -n kube-system
3、打印资源对象的详细信息
每个资源对象都包含着用户期望的状态(Spec)和现有的实际状态(Status)两种状态信息,“kubectl get -o {yaml|josn}”或“kubectl describe”命令都能打印出指定资源对象的详细信息。例如查看 kube system命名间中拥有标 component=kube apiserver的Pod 对象的资源配置清单(期望的状态)及当前的状态信息,并输出为 yaml 格式,命令如下:
kubectl get pods -l componet=kube-apiserver -o yaml -n kube-system
“kubectl describe”命令还能显示与当前对象名相关的其他资源,如Event或Controller等。例如查看Kube-system命名空间中用用标签component=kube-apiservice的Pod对象的详细描述信息:
kubectl describe pods -l componet=kube-apiserver -o yaml -n kube-system
这两个命令都支持以Type name或type/name的格式指定具体资源对象,如“ pods kube apiserver-master.ilinux.io ”或“ pods/kube-apiserver-master.ilinux.io”,以了解特定资源对象的详细属性信息及状态信息.
4、打印容器中的日志信息。
通常一个容器中仅会运行一个进程(及其子进程),此进程作为PID为1的进程接收并处理管理信息,同时将日志直接输出至终端中,而无需像传统的多进程系统环境那样将日志存储于文件中,因此容器日志的获取一般要到其控制上进行。“kubectl logs”命令可以打印Pod对象内指定的日志信息。命令格式为“kubectl logs [-f][-p](POD|YTPE/NAME)[-c CONTAINER][options]” ,若Pod对象内仅有一个容器,则-c选项及容器名称为可选。例如查看命名空间kube-system中仅有一个容器的Pod对象kube-apiservice-master.ilinux.io的日志:
kubectl log kube-apiserver-master.ilinux.io -n kube-system
为上面的命令添加-f选项,还能用于持续监控指定容器中的日志输出,其行为类似于使用了-f选项的tail命令。
5、在容器中执行命令
容器的隔离属性使得对其内部信息的获取变得不再直观,这一点在用户需要了解容器内部进程的运行特性、文件系统上的文件及路径布局等信息时,需要穿透其隔离边界进行。“kubectl exec”命令便是用于在指定的容器内运行其他应用程序的命令,例如,在kube-system命名空间中的Pod对象的kube-apiservice-master.ilinux.io上的唯一容器中运行ps命令:
kubectl exec kube-apiserver-master.ilinux.io -n kube-system --ps
如果Pod对象中存在多个容器,则需要以-c选项指定容器后再运行。
6、删除资源对象
使命已完成或存在错误的资源对象可以使用kubectl delete 命令删除 不过,对于受控于控制器的对象来说,删除以后其控制器可能会重建出来类似的对象 例如 Deployment控制器下的Pod对象在被删除时就会被重建。例如,删除默认命名空间中名为nginx-svc的Service对象
kubectl delete services nginx-svc
删除命名空间kube-system中拥有k8s-app=kube-proxy的所有Pod对象
kubectl delete pods -l app=monitor -n kube-system
删除所有的 某类对象可以使用 kubectl delete type --all -n NS命令,例如 删除kube-public名称空间中的所有Pod对象
kubectl delete pods -l -all -n kube-public
有些资源对象(如pod),支持优雅删除的机制,他们有着默认的删除宽限期,不过,用户可以在命令中使用--grace-period选项或--now选项来覆盖默认的宽限期。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除