kubernetes常见问题

[TOC]

Rancher平台使用问题记录

平台问题 详细说明 备注
rancher与k8s
异常断连

image
image-1
1.在查看大量日志时出现过该问题
2.一些官方组织的交流群中建议优化 k8s系统参数,增加ip port range

image-2
k8s grpc-lb无效 方案有4种:
1、grpc-client + k8s headless
2、envoy (grpc proxy)
3、server mesh (istio/linkerd)
4、
rancher平台部署
节点亲和性
pod亲和性/反亲和性
删除deployment,对应service未删除
headless服务部署
节点选择/在页面打污点
k3s部署 指定reserve预留资源
agent 无法设置reserve?
https://docs.rancher.cn/docs/k3s/installation/install-options/server-config/_index/#agent-%E7%BD%91%E7%BB%9C
https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/
zoomkeeper更新pod始终有一个没有update rollingUpdatePartition: 0 即可 https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions

Kafka部署extralaccess
longhorn storage 在etcd恢复中是否可用?
Kubernetes在在删除namespace后的恢复问题? 1.通过etcd恢复所有的资源配置
2.配置所有的storageclass创建pv的回收策略为:retain

开发人员使用需求汇总

需求内容 详细说明 时间 备注
pod对cpu/memery资源可见性限制
pod支持绑定宿主机CPU核
api-gateway
nuclio pod 统一对外开放访问
有状态数据库服务更新手动确认 更新要求:
1.先只更新一个pod
2.手动确认第一个pod运行正常之后再更新其他pod
3.pod确认时间几分钟到数小时不等,无法使用readness进行确认
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions

k3s 在混用docker/containerd之后,重启docker导致的pod hostport模式中iptables路由混乱问题测试验证

hostport添加分析

步骤 添加的chain 添加内容 备注
1 PREROUTING CNI-HOSTPORT-DNAT
2 CNI-HOSTPORT-DNAT CNI-DN-xxxx 每新增一条hostport端口,就增加一条CNI-DN-xxxx chain
3 CNI-DN-xxxx DNAT到对应的pod IP 描述具体的hostport路由到的service

nodeport添加分析

步骤 添加的chain 添加内容 备注
1 PREROUTING KUBE-SERVICES
2 KUBE-SERVICES KUBE-NODEPORTS
3 KUBE-NODEPORTS KUBE-SVC-xxx 每新增一个nodeport端口,就增加一条KUBE-SVC-xxxchain记录
4 KUBE-SVC-xxx 具体路由到对应的service

测试步骤:

1、在集群运行一个nodeport和一个hostport服务,查看iptables路由情况

2、将hostport所有在节点k3s agent的启动容器从docker修改为containerd,重启k3s,查看iptables路由情况

3、重启docker,查看iptables路由情况

4、将k3s agent的启动容器改回docker,查看路由情况

测试结果:

1、在集群运行一个nodeport和一个hostport服务,查看iptables路由情况

pod ip分别为

  • nodeport pod:10.42.1.30
  • hostport pod:10.42.1.31 
  • CNI-HOSTPORT-DNAT 仅有一条记录

image-3

image-4

image-5

2、将hostport所有在节点k3s agent的启动容器从docker修改为containerd,重启k3s,查看iptables路由情况

pod ip分别为

  • nodeport pod:10.42.1.32
  • hostport pod:10.42.1.33
  • CNI-HOSTPORT-DNAT 有两条记录: 10.42.1.31 10.42.1.33 (以前的hostport dnat记录没有删除)

image-6

image-7

image-8

image-9

image-10

3、重启docker,查看iptables路由情况

pod ip分别为

  • nodeport pod:10.42.1.32
  • hostport pod:10.42.1.33
  • CNI-HOSTPORT-DNAT 有两条记录 (以前的hostport dnat记录没有删除)

image-11

image-12

image-13

image-14

4、将k3s agent的启动容器改回docker,查看路由情况

pod ip分别为

  • nodeport pod:10.42.1.34
  • hostport pod:10.42.1.35
  • CNI-HOSTPORT-DNAT 有两条记录 10.42.1.33 10.42.1.35(以前的hostport dnat记录没有删除)

image-15

image-16

image-17

image-18

image-19

test环境中,有重复iptables规则的主机有

image-20

image-21

image-22

image-23