Chapter03 运行于 k8s 中的容器
书籍 kubernetes in action 摘要笔记
操作系统:centos7.6
kubernetes:v1.11.5
kb = kubectl
有些步骤只 cat file,还需要 kb apply -f file
查看日志
1、找到对应pod的docker容器
docker logs <container id>
日志文件位置:
/var/lib/docker/containers/<container id>/<container id>-json.log
2、kb logs获取pod日志。
kb logs kubia-manual
3、当pod中有多个容器时,可以通过-c 指定容器
kb logs kubia-manual -c kubia
4、查看前一个容器的日志
kb logs kubia-liveness --previous
注意事项:
每天或者每次日志文件达到10M大小,容器日志都会自动轮替。kb logs 命令仅显示最后一次轮替后的日志条数
标签
1、查看 pod 标签
kb get pod --show-labels
2、在列中显示某些标签
kb get po -L creation_method
3、添加标签
kb label po kubia creation_method=manual
4、修改标签
kb label po kubia-5f4rl creation_method=man --overwrite
使用标签和选择器来约束 pod 调度
使用标签分类工作节点
kb label node k8s01 gpu=true
kb get node -l gpu=true
在 pod 的 yaml 文件中添加一个节点选择器
[root@k8s01 Chapter03]# cat kubia-gpu.yaml
apiVersion: v1
kind: Pod
metadata:
name: kubia-gpu
spec:
nodeSelector:
gpu: "true"
containers:
- image: luksa/kubia
name: kubia
利用 label 来过滤资源
显示带标签 creation_method=man 的 pod
kb get pod -l creation_method=man
显示带标签 creation_method 的 pod
kb get pod -l creation_methodc
显示不带标签 creation_method 的 pod
kb get pod -l '!creation_methodc'
显示带标签 creation_method,值为 man 或者 femal 的 pod
kb get pod -l 'creation_method in (man,femal)'
注意事项:
env notin (prod,devel)、env!=prod 失效,不带 env 标签的 pod 也会显示
删除操作
删除当前命名空间的所有 pod( rc 创建的 pod 不会删除)
kb delete po --all
删除当前命名空间的几乎所有资源
kb delete all --all
使用删除命名空间来删除 pod
kb delete ns uat
可以使用 kb explain 命令快速查看任何 kubernetes 的资源信息
kb explain pod
删除节点
kubectl cordon k8s-node1 #将k8s-node1节点设置为不可调度模式
kubectl drain k8s-node1 #将当前运行在k8s-node1节点上的容器驱离
kb delete node k8s-node1
恢复节点(前面删除的)
systemctl restart kubelet
docker restart haproxy
kubectl uncordon k8s-node1 #执行完维护后,将节点重新加入调度