摘要:问题现象 k8s集群外节点192.168.0.112创建路由,可以访问到k8s集群内节点pod ip。 ip route add 10.16.0.0/16 via 192.168.0.105 dev ens33 目的网段是容器网段,下一跳是k8s节点ip 192.168.0.105,相当于flann
阅读全文
摘要:klog.InitFlags(nil) flag.Parse() defer klog.Flush() cfg, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config") cfg.QPS = 10000 cfg.Burst = 2
阅读全文
摘要:alias k=kubectl 操作kubeconfig # 查看context k config get-contexts # 切换context k config use-context contextName # 使用context访问 k --context=contextName get
阅读全文
摘要:问题现象 iptables -t nat -I OUTPUT -d 10.10.10.10 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.105:6443 # 报错requested domain name does not match
阅读全文
摘要:问题现象 使用kubeconfig时,报错the server localhost:8080 was refused。 问题分析 对比正常kubeconfig,缺少current-context。 解决问题 kubectl --kubeconfig=config config use-context
阅读全文
摘要:k8s v1.19.0 kube-apiserver配置 参数etcd-servers中地址可以填多个,填了多个地址后kube-apiserver会连上所有,不加https不影响。 停止etcd后,kube-apiserver容器会反复重启。
阅读全文
摘要:使用场景 物理机上GPU卡被挂载到容器中,容器中安装GPU驱动来管理GPU。 约束 k8s对GPU设备的管理只能处理设备个数这一种情况。GPU产品有AMD和NVIDIA,在k8s中对应amd.com/gpu和nvidia.com/gpu。GPU数量只能设置在limits,requests默认与lim
阅读全文
摘要:对于NVIDIA GPU,存在3种设备插件的实现。 官方NVIDIA GPU插件 要求1. 节点安装了NVIDIA驱动。2. 节点安装nvidia-docker 2.0。3. Docker的默认运行时必须设置为nvidia-container-runtime,而不是runc。4. NVIDIA 驱动
阅读全文
摘要:问题现象 package main import ( "flag" "gopkg.in/natefinch/lumberjack.v2" "k8s.io/klog/v2" ) func main() { klog.InitFlags(nil) flag.Set("logtostderr", "fal
阅读全文
摘要:场景1:add->add->get->get package main import ( "fmt" "k8s.io/client-go/util/workqueue" ) func main() { queue := workqueue.NewRateLimitingQueue(workqueue
阅读全文
摘要:k8s v1.19.0 强删Pod产生Update事件 informerFactory.Core().V1().Pods().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ UpdateFunc: func(old, new i
阅读全文
摘要:informerFactory创建informer informer一般由informerFactory创建(支持直接创建informer,一般不这么做),informerFactory支持创建多种资源类型的informer,同一个informerFactory中同一种资源类型只创建一个inform
阅读全文
摘要:本地盘和云磁盘区别 本地盘不支持跨物理机迁移,云磁盘支持跨物理机迁移。 本地目录生命周期 emptyDir、downwardAPI、configMap、secret:kubelet创建本地目录,该目录会随着Pod的消亡而删除。hostPath:本地目录一直存在。 PVC、PV和StorageClas
阅读全文
摘要:使用kubeconfig优先级顺序 1. --kubeconfig参数2. $KUBECONFIG环境变量3. ${HOME}/.kube/config文件 查看kubeconfig内容 kubectl config view --raw 合并多个kubeconfig mv ~/.kube/conf
阅读全文
摘要:k8s secret默认类型是Opaque,所有类型secret value都是base64转码值。 创建secret 把用户名和密码base64转码存入echo -n "abc" | base64 apiVersion: v1 kind: Secret metadata: name: test t
阅读全文
摘要:Pod使用spec.serviceAccountName对应的token import "k8s.io/client-go/rest" cfg, err := rest.InClusterConfig() if err != nil { klog.Fatalf("Error building kub
阅读全文
摘要:日志输出 # 业务日志 I0220 22:12:39.149364 40965 multi_config_multi_clientset.go:63] begin to wait cache sync I0220 22:12:39.250461 40965 multi_config_multi_cl
阅读全文
摘要:k8s v1.19.0 cd kubernetes && make generated_filescd cmd/kube-apiserver && go build 报错app/server.go:467:87: undefined: openapi.GetOpenAPIDefinitionscd
阅读全文
摘要:k8s v1.19.0 watch这种长时间运行请求不受限流影响。 普通限流 客户端访问kube-apiserver,限流参数有max-mutating-requests-inflight(默认值是200,对应操作类请求)和max-requests-inflight(默认值是400,对应查询类请求)
阅读全文
摘要:k8s v1.19.0 Shutdown等待结束流程 第1步:reflector停止list/watch。 第2步:DeltaFifo队列关闭,元素全部取出,放入用户队列。 第3步:等待业务处理完成。 场景1:Shutdown方法等待EventHandler回调方法完成 klog.InitFlags
阅读全文