kubernetes中调用pod到哪个节点上是无关紧要的,但由于实际情况,每台node的硬件环境不一致,所以某些情况要求将不同pod调到指定节点上运行。也可以通过label实现。kubectl label node node-id gpu=true将pod调用到此节点只需要在yaml中描述到
apiVersion: v1
kind: pod
metadata:
kubia-gpu
spec:
nodeSelector:
gpu: "true"
containers:
- image: luksa/kubia
name: kubia
探针:对于pod中容器要进行监控,可以用探针。3种探针方式:http get 返回2xx,3xx 也就是没错误4xx,5xxtcp 套接字 能建立连接正常,反之不正常exec 执行某个命令,成功即0,否则失败 http get的描述方法:
apiVersion: v1
kind: Pod
metadata:
name: kubia-liveneess
spec:
containers:
- image: luksa/kubia-unhealthy
name: kubia
livenessProbe:
httpGet:
path: /
port: 8080
luksa/kubia-unhealthy 这个镜像为node.js,提供web服务,其中应用中添加了让此web服务只在前5次正常返回,5次后就会返回错误。 一般错误3次后,就会重启容器,那么你想看容器错误日志就要看上次的日志因此要用 –previous参数kuectl logs mypod –previous 使用kubectl describe po pod-id能看到具体的错误代码,以及在底部显示了容器为什么终止,–kubernetes发现容器不健康,所以终止并重新创建 默认在描述了探针,pod在启动的时候就会在刚刚启动时进行一次检测,因此最好的做法是给检测加一个初始延迟。
apiVersion: v1
kind: Pod
metadata:
name: kubia-liveneess
spec:
containers:
- image: luksa/kubia-unhealthy
name: kubia
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 15
初始延迟为15秒