书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》
一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Kubernetes认证考试自学系列 | 汇总_COCOgsta的博客-CSDN博客
在容器中执行命令的语法如下。
kubectl exec pod 名字 -- 命令
复制代码
步骤1:查看pod1里/usr/share/nginx/html里的内容。
[root@vms10 pod]# kubectl exec pod1 -- ls /usr/share/nginx/html
50x.html
index.html
[root@vms10 pod]#
复制代码
也可以让容器和物理机之间互拷文件,物理机拷贝文件到容器的用法如下。
kubectl cp /path1/file1 pod:/path2/:把物理机里文件的/path1/file1拷贝到pod的/path2里。
也可以把容器里的东西拷贝到物理机,这里要注意拷贝的是目录还是文件。
Kubectl cp pod:/path2/ /path1/:把容器里目录/path2/里的东西拷贝到物理机的/path1里。
如果从容器里拷贝的是文件而不是目录的话,则需要在物理机里指定文件名。
kubectl cp pod:/path2/file2 /path1/file2:把容器里的文件/path2/file2拷贝到物理机的目录/path1里。
步骤2:把物理机的文件/etc/hosts拷贝到pod1里。
[root@vms10 pod]# kubectl cp /etc/hosts pod1:/usr/share/nginx/html
[root@vms10 pod]# kubectl exec pod1 -- ls/usr/share/nginx/html
50x.html
hosts
index.html
[root@vms10 pod]#
复制代码
步骤3:把pod里的东西拷贝到物理机。
[root@vms10 pod]# kubectl cp pod1:/usr/share/nginx/html/ /opt
tar: Removing leading `/' from member names
[root@vms10 pod]# ls /opt/
50x.html cni hosts index.html rh
[root@vms10 pod]#
复制代码
步骤4:进入pod里并获取bash。
[root@vms10 pod]# kubectl exec -it pod1 -- bash
root@pod1:/#
root@pod1:/# exit
exit
[root@vms10 pod]#
复制代码
步骤5:如果pod里有多个容器的话,默认是进入第一个容器里。
[root@vms10 pod]# kubectl exec -it pod2 --bash
Defaulting container name to c1.
Use 'kubectl describe pod/pod2 -n default' to see all of the containers in this pod.
root@pod2:/# exit
exit
[root@vms10 pod]#
复制代码
步骤6:如果想进入第二个容器里的话,用-c指定容器名。
[root@vms10 pod]# kubectl exec -it pod2 -c c2 -- bash
root@pod2:/# exit
exit
[root@vms10 pod]#
复制代码
注意:从前面的yaml文件可知,名字为pod2的pod里有两个容器,分别是c1和c2。
步骤7:pod的具体属性可以通过describe查看。
[root@vms10 pod]# kubectl describe pod pod2
Name: pod2
Namespace: default
Priority: 0
Node: vms12.rhce.cc/192.168.26.12
... 输出 ...
Normal Started 2s (x2 over 16m) kubelet, vms12.rhce.cc Started container c1
[root@vms10 pod]#
复制代码
步骤8:查看pod里的输出。
[root@vms10 pod]# kubectl logs pod1
[root@vms10 pod]#
复制代码
步骤9:如果一个pod里有多个容器,需要使用-c指定查看哪个容器的输出。
[root@vms10 pod]# kubectl logs pod2
error: a container name must be specifed for pod pod2, choose one of: [c1 c2]
[root@vms10 pod]#
[root@vms10 pod]# kubectl logs pod2 -c c1
aa
[root@vms10 pod]#
复制代码
步骤10:删除这两个pod。
[root@vms10 pod]# kubectl delete pod pod1
pod "pod1" deleted
[root@vms10 pod]# kubectl delete -f pod2.yaml
pod "pod2" deleted
[root@vms10 pod]#