OpenShift-Kubernetes中易理解错误的问题汇总
###1. readiness健康检查一直失败,Pod会不会重启?
不会,一直处于Running状态,但Not Ready。
2. Pod重启时,Pod的容器是重启,还是重新创建?
POD容器不动,应用容器是重新创建。POD IP保持不变,但应用容器中的临时文件会丢失。
###3. 如果更改Deployment的配置后,马上将配置恢复回去,应用Pod是否会触发重新部署?
不会,恢复回去后不会创建新的RS。
4. master_cluster_hostname与master_cluster_public_hostname的区别
master_cluster_hostname是集群内部组件使用的域名
master_cluster_public_hostname是集群外部使用的域名
###5. 对于高可用集群中,3个master节点是完全相同的吗?openshift
不是,虽然它们的运行态是完全一致的,但是在OpenShift的运维脚本中是有区分的,如集群扩容时。有一台是主master(inventory中的第一台),它会单独保存集群的证书及一些配置。
###6. 对于statefulset类型的工作负载,只能逐个启动吗?
并不是,statefulset类型的workload默认确实是逐个启动,但是可以通过更改它的启动策略来实现并行启动。
spec.podManagementPolicy值默认为OrderedReady,如果设置为Parallel,将会并行启动和删除Pod。
###7. statefulset类型的工作负载的多个副本,能共用一块共享存储吗?
当然可以,在statefulset的编排中不使用volumeTemplate,而是与deployment资源一样设置共享存储就可以了。
###8. 如果应用存活检查/就绪检查未通过的情况下,是否能顺利地进行应用更新?
不一定,这个取决于应用的升级策略:滚动升级,maxSurge与maxUnavailable的配置。如果应用是一个副本,maxSurge与maxUnavailable的值为默认值25%,将无法关闭旧版本应用。
- maxSurge:升级过程中最多可以比原先设置多出的POD数量。可以是具体个数,也可以百分比(进一法取整)
- maxUnavailable:升级过程中最多有多少个POD处于无法提供服务的状态。可以是具体个数,也可以百分比(去尾法取整)
###9. 如果应用做了多副本,而且部署在不同的节点上,即使宿主机发生宕机,对业务也不会有影响,正确吗?
这个结论并不正确。因为作为内部负载均衡的Service并不能马上感知应用的问题,所以不会马上主动剔除故障应用,同时Service一般使用(ocp)iptables作为代理方式,它没有使用失败则使用别的节点的机制,所以在一段时间内请求会被发送到问题节点。
默认情况如下:
- 40s检测后,流量会从负载均衡中剔除。
- 5分钟之内完成重启,podname不变,pod的ip会更新。
- 如果5分钟后node节点仍然没有恢复,集群会将问题pod重新调度。
###10. NFS作为持久化卷挂载在应用中,如果NFS服务故障后恢复,容器是否会自动重新挂载存储服务?
是的。
11. 在Docker的服务器上,关闭/重启iptables,上面的容器网络依然正常吗?
异常。docker安装完成后,会自动接管iptables或者firewalld,在docker run的时候,会自动往iptables里加入规则;所以当iptables重启后会丢失,只有再重启docker就好了的原因。
在使用Systemd 时, firewalld 会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动或者重启 firewalld ,就需要重启 Docker 进程了。