持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 15 天,点击查看活动详情
创建和访问Pod
创建namespace, namespace是逻辑上的资源池
kubectl create namespace demo
使用指定文件创建Pod
kubectl create -f demo-pod.yaml
查看pod,可以简写po
所有的操作都需要指定namespace,如果是在default命名空间下,则可以省略
kubectl -n demo get pods -o wide
使用Pod Ip访问服务,3306和8002
curl 10.244.1.146:8002/blog/index/
再次访问服务,3306和8002
curl 10.244.1.146:8002/blog/index/
查看pod调度节点及pod_ip
kubectl -n demo get pods -o wide
查看完整的yaml
kubectl -n demo get po myblog -o yaml
查看pod的明细信息及事件
kubectl -n demo describe pod myblog
进入Pod内的容器
kubectl -n <namespace> exec <pod_name> -c <container_name> -ti /bin/sh
查看Pod内容器日志,显示标准或者错误输出日志
kubectl -n <namespace> logs -f <pod_name> -c <container_name>
更新服务版本
$ kubectl apply -f demo-pod.yaml
删除Pod服务
根据文件删除
$ kubectl delete -f demo-pod.yaml
根据pod_name删除
$ kubectl -n <namespace> delete pod <pod_name>
Pod数据持久化
若删除了Pod,由于mysql的数据都在容器内部,会造成数据丢失,因此需要数据进行持久化。
服务健康检查
检测容器服务是否健康的手段,若不健康,会根据设置的重启策略(restartPolicy)进行操作,两种检测机制可以分别单独设置,若不设置,默认认为Pod是健康的。
两种机制:
LivenessProbe探针用于判断容器是否存活,即Pod是否为running状态,如果LivenessProbe探针探测到容器不健康,则kubelet将kill掉容器,并根据容器的重启策略是否重启,如果一个容器不包含LivenessProbe探针,则Kubelet认为容器的LivenessProbe探针的返回值永远成功。ReadinessProbe探针用于判断容器是否正常提供服务,即容器的Ready是否为True,是否可以接收请求,如果ReadinessProbe探测失败,则容器的Ready将为False,控制器将此Pod的Endpoint从对应的service的Endpoint列表中移除,从此不再将任何请求调度此Pod上,直到下次探测成功。(剔除此pod不参与接收请求不会将流量转发给此Pod)。
三种类型:
- exec:通过执行命令来检查服务是否正常,回值为0则表示容器健康。
- httpGet方式:通过发送http请求检查服务是否正常,返回200-399状态码则表明容器健康。
- tcpSocket:通过容器的IP和Port执行TCP检查,如果能够建立TCP连接,则表明容器健康。