iptables规则导致pod无法连接kube-apiserver

前言 最近有一个k8s环境由于搬迁了机房,虽然IP没有变化但是通过后服务还是没有正常启动,于是上服务器检查 排查过程 1 首先查看k8s基础组件是否正常 etcd apiserver scheduler proxy controller-manager 都正常启动,日志也无报错 2 检查网络组件是否正常 coredns calico都未启动成功, 日志有报错连不上apiserver(clusterIP),重启calico发现无任何作用 3 检查calico配置无问题 4 通过其它已正常运行的Pod,发现在pod中确实无法连接apiserver的端口但可以ping通 5 在node上连接apiserver均正常 6 尝试重启服务器 --未解决 7 怀疑防火墙规则异常,尝试清理iptables规则并重启docker后,calico恢复正常,网络通信也正常 最终也是未找到具体影响的规则,建议当机房迁移后虽然IP没变化,还是清理一下防火墙规则 命令 # 清理完防火墙规则后记得重启docker sudo iptables -F sudo iptables

k8s误删pvc状态为Terminating且pv还在恢复方法

有人误删pvc,由于pod还在使用pvc,所以现在的状态为Terminating。 恢复操作: 首先调节pv的回收策略为Retain,pv 的回收策略有三种分别是: Retain:PV的默认回收策略,删除pvc后,挂载卷的数据会保留。可以通过kubectl get pv看到 Recycle:删除卷的内容并使卷可用于再次声明。通过这种方式,持久卷可以被不同的持久卷声明和pod反复使用。但是删除pv以后,挂载卷的数据会被删除掉。 Delete:删除底层存储。 调节pv的回收策略为Retain,如果是Retain则省略此步: kubectl edit pv PVNAME 备份pvc yml kubectl get pvc PVCNAME -o yaml > PVCNAME.yml 停止相关pod,当pod停止后,相关pvc会删除; # 删除pod kubectl -n test scale deploy nginx --replicas=0

k8s hostNetwork 网络的 pod 无法解析 service

因为特殊环境使用的 hostnetwork,发现 pod 无法解析 k8s 的 service,通过google一番解决此问题记录在此 将使用hostnetwork的pod增加一个配置 dnsPolicy: ClusterFirstWithHostNet即可 dnsPolicy为ClusterFirst的pod,/etc/resolv.conf 文件中内容和宿主机内容一致。 dnsPolicy为ClusterFirstWithHostNet的pod,/etc/resolv.conf 文件中内容和宿主机内容不一致,使用的是 k8s 集群内的dns搜索域。 K8S官网资料 Pod 的 DNS 策略 DNS 策略可以逐个 Pod 来设定。目前 Kubernetes 支持以下特定 Pod 的 DNS 策略。 这些策略可以在 Pod 规约中的 dnsPolicy 字段设置: * "Default": Pod 从运行所在的节点继承名称解析配置。参考

k8s停机维护

手动迁移 当需要下线维护某一台node时,可通过如下操作相关命令处理 cordon 标记节点不可调度,后续新的pod不会被调度到此节点,但是该节点上的pod可以正常对外服务; drain 驱逐节点上的pod至其他可调度节点 uncordon 取消不可调度 # 标记节点不可调度 kubectl cordon node1 # 查看节点状态 kubectl get node NAME STATUS ROLES AGE VERSION node1 Ready,SchedulingDisabled master 1d v1.22.0 # 驱逐pod kubectl drain node1 --delete-local-data --ignore-daemonsets --force # 参数如下: # --delete-local-data 删除本地数据,即使emptyDir也将删除; # --ignore-daemonsets

kubeadm 修改k8s证书有效期到 100年

1. 获取源码 访问:https://github.com/kubernetes/kubernetes/releases,下载特定版本源码 wget https://github.com/kubernetes/kubernetes/archive/v1.20.4.tar.gz tar -zxvf v1.20.4.tar.gz mv v1.20.4.tar.gz kubernetes cd kubernetes 2. 修改证书有效期 查看网上的资料主要有两个地方需要修改 修改 CA 有效期为 100年(默认为 10年) vim ./staging/src/