摘要:crd_controller走到断点后更新或者删除fruit,从Lister里面取到的对象内容保持不变。
阅读全文
摘要:controller通过cluster ip:443 + https(非grpc)访问kube-apiserver。kube-apiserver通过127.0.0.1:2379 + grpc访问etcd。无论是kube-scheduler,还是kube-controller-manager,都是通过
阅读全文
摘要:为什么kubelet引入cAdvisor 1 无法提供节点粒度资源数据。2 docker stats只能查看容器当前资源占用情况,无法查看历史数据。3 没有可视化页面。 部署cAdvisor容器并访问页面 docker run -itd \ --rm \ --volume=/:/rootfs:ro
阅读全文
摘要:k8s v1.19.0 configmap热更新约束 支持热更新:目录方式挂载configmap。不支持热更新:subPath单个文件方式挂载configmap和configmap注入到环境变量。 configmap热更新逻辑 修改kube-system/configmap coredns后触发ku
阅读全文
摘要:k8s v1.19.0 方法1:基于文件路径 staging/src/k8s.io/client-go/tools/clientcmd/client_config.goBuildConfigFromFlags函数根据本地kubeconfig文件路径来生成restclient.Config对象。 st
阅读全文
摘要:--masquerade-all参数 true表示所有访问Service的数据包被SNAT。false(默认情况)表示源地址不属于Pod网段的数据包访问Service被SNAT。 转发场景分析 如果pod发送的响应包源地址不是client发送的请求包目的地址,那么直接丢弃。 client访问clus
阅读全文
摘要:k8s v1.19.0 虽然nginx pod ip是192.168.0.105,但是其他主机网卡ip上也有80端口。
阅读全文
摘要:k8s v1.19.0 pkg/kubelet/kubelet_pods.gogenerateAPIPodStatus函数根据getHostIPAnyWay方法返回结果作为PodIP,该PodIP会成为service的后端IP。 pkg/kubelet/kubelet_getters.gogetHo
阅读全文
摘要:k8s v1.19.0 检查配置 livenessProbe、readinessProbe和startupProbe配置,这3个都是走https。 kubelet加跳过证书认证 kubelet在执行https探测时跳过证书认证,kube-apiserver正常https业务接口无法跳过证书认证。pk
阅读全文
摘要:k8s v1.19.0 kube-controller-manager加分布式锁lease,完成leader选举,与kube-scheduler相同。 holder是主机名+uuidcmd/kube-controller-manager/app/controllermanager.goRun函数 s
阅读全文
摘要:flannel v0.11.0 kube-flannel-ds-amd64 main.go flanneld启动时设置kube-subnet-mgr参数是true,表示连接kube-apiserver来分配subnet,而不是直连etcd。 启动时从挂载的configmap kube-flannel
阅读全文
摘要:部署nodePort+StatefulSet apiVersion: v1 kind: Service metadata: name: nginx spec: ports: - port: 80 selector: app: nginx type: NodePort apiVersion: apps
阅读全文
摘要:dns解析策略 ClusterFirst 默认dns解析策略(不管容器走容器网络还是走主机网络)容器网络容器dns解析走coredns,主机网络容器dns解析走主机dns。Pod走容器网络场景 10.96.0.10是service kube-dns的ClusterIP。 Pod走主机网络场景 Clu
阅读全文
摘要:目的 KubeZoo基于协议转换核心理念实现控制面多租户功能,通过在资源的name/namespace等字段上增加租户的唯一标识 ,解决不同租户的同名资源在同一个上游k8s集群命名冲突的问题。 架构 KubeZoo:由无状态的kubezoo-server和Etcd组成。K8S MasterMaste
阅读全文
摘要:k8s v1.19.0 目的 multus支持不同容器网络插件实现容器多网卡,也支持相同容器网络插件实现容器多网卡。 实操 git clone https://github.com/intel/multus-cni.git && cd multus-cni git checkout v4.0.0 #
阅读全文
摘要:k8s 1.19.0 初始情况 apiVersion: v1 kind: Service metadata: name: nginx spec: ports: - port: 80 selector: app: nginx apiVersion: apps/v1 kind: StatefulSet
阅读全文
摘要:k8s 1.19.0coredns 1.7.0 dns ip获取过程 dns请求到达coredns后,从list/watch本地缓存indexer获取对象,返回结果。 外部域名返回用户配置的IP。 有状态应用Pod域名:pod-name.svc-name.namespace.svc.cluster.
阅读全文
摘要:# 增加自定义域名www.abc.com,对应的IP是1.2.3.4。 kubectl edit configmap coredns -n kube-system fallthrough表示在hosts找不到解析的域名时,传递给CoreDNS的下一个插件,避免集群内部域名解析失败。 参考资料 htt
阅读全文
摘要:k8s 1.19.0PLEG全称是Pod Lifecycle Event Generator 即Pod生命周期事件生成器,定时检查Pod状态,上报Pod Event事件。 PLEG Start 启动一个协程,每隔1s调用一次relist,根据最新的PodStatus生成PodLiftCycleEve
阅读全文
摘要:k8s 1.19.0 问题现象 coredns pod因readiness检查失败而无法ready。 删除pod后依然无法恢复。 问题分析 根据kubelet日志,coredns接口检查返回503。 查看coredns日志,发现无法正常访问kube-apiserver。 容器内curl不通,但是宿主
阅读全文