随笔系列目录
方便自己以及各位网友学习和查阅kubernetes相关配置及概念
基本概念
总所周知docker是namespace做隔离和cgroup做资源限制,rootfs做文件系统,kubernetes的pods又有点类似于docker,为何不直接就使用docker的容器呢,而是要再包一层呢?
为了让多个需要共享namespace和cgroup的容器放置在一起进行管理,类似于进程和虚拟机的关系。通过pause来实现。
常见的pod配置
apiVersion: v1
kind: Pod
metadata:
name: javaweb-2
spec:
initContainers:
- image: geektime/sample:v2
name: war
command: ["cp", "/sample.war", "/app"]
volumeMounts:
- mountPath: /app
name: app-volume
containers:
- image: geektime/tomcat:7.0
name: tomcat
command: ["sh","-c","/root/apache-tomcat-7.0.42-v2/bin/start.sh"]
volumeMounts:
- mountPath: /root/apache-tomcat-7.0.42-v2/webapps
name: app-volume
ports:
- containerPort: 8080
hostPort: 8001
volumes:
- name: app-volume
emptyDir: {}
配置说明
apiversion:api版本
kind:资源类型
spec:pod模板配置信息
- initContainers:初始化容器,在运行容器之前会先运行这个容器,用于有资源依赖的容器
- containers:运行的容器,需要注意容器命令和镜像命令之间的优先级,具体可查看文档
- volumeMounts:挂载点 - volumes:自定义volumes配置(可以参考kubernetes的volume配置)
具体可以在安装好的集群运行下面的指令查看
kubectl api-resources|grep pod
查看集群所有api版本信息,以及通过运行
kubectl explain pod
查看对应版本的配置文档,explain命令在工作和学习中相当有用,建议学习使用,后续不用再百度命令和配置了,后续不再继续说明了。
pod生命周期
Pending:pod已被k8s接受但是还未创建
Running:运行中
Succeeded:所以容器成功终止
Failed:其中一个或多个容器运行失败
Unknown:一般是由于网络不通导致异常
pod其他玩法
pod分布式调度
pod及容器配置(包括节点亲和,内存,cpu配置,ConfigMap,volume配置等等,具体可以查看文档学习)