docker和k8s
docker和虚拟机的区别
docker是轻量级的沙盒,在容器里面运行的只是应用。而虚拟机需要运行整个操作系统。
docker只有自己的文件系统,与宿主机共用内核,而且所有的docker使用同一套bootfs【就是引导启动程序】,所以docker要比虚拟机更轻量。
简述docker和k8s的关系
docker通过dockerfile将应用和相关的以来环境打包到镜像里面,从而实现可移植的特性。
k8s是将镜像实例化后的容器编排和关联到多个节点上。
如何切换ipvs
首先通过lsmod查看系统是否加载了ipvs模块。服务器一般都是默认配置的iptables,ipvs需要手动配置加载到系统。
然后通过kubectl edit configmap kubeproxy【就是修改kubeproxy的配置文件】,里面有个mode参数,把ipvs填进去,然后把现在生成的kubeproxy的pod删除掉,因为他是被controller管理的,会重新自动生成。
ipvs和iptables的区别
- 他们都是通过netfilter内核来实现转发的。
- 区别在于iptables是为防火墙设计的,而ipvs专门用于高性能lb集群工具lvs。
iptables的访问是轮询配置表,自上而下依次执行,当规则变多的时候,效率会很慢。
ipvs引入了hash表概念,支持多种转发算法,效率比较快。缺点就是centos5以内的内核支持不全。
k8s节点显示not ready
1,kubectl get node 显示not ready,多个pod显示terming状态。
2,登录到对应的机器上查看kubelet日志发现PLEG检查失败【PLEG每隔一秒跟踪pod的状态并返回给apiserver,如果超过三分钟未返回master就会认为node故障】。
3,搜索发现PLEG可能检查失败的原因
(1)go程序里面是通过channel来缓存接收到的消息,当过多时会异常,1.10以前的有这个问题。
(2)bus异常,bus时用来进程之间的通信,通过top命令发现busCPU百分百。
4,通过trace + bus_daemon_pid命令发现bus_daemon一直返回错误。
5,重启机器生效。
ingress-nginx无法通过域名访问svc
1,检查ingress-controller的各个svc和pod是否运行正常。【检查发现pod报错,提示没有权限create和update pod, 修改role的权限后不报错了】
2,检查ingress是否正常【发现error,没有配置默认endpoint,配置后也不报错了】。
3,此时可以通过IP+端口访问svc,但是域名不行。【是机房屏蔽了非公司域名,修改成公司的域名后缀后可以访问了】
es安装失败
1,镜像拉取失败。
2,pv和pvc没有绑定成功。【添加storageclassname】
3,日志报错没有目录权限。【pv创建的目录是root,es操作用户没有权限,chmod 777】
4,日志报错没有成功选举mater。【在rs配置文件里面,设置默认的集群初始化节点】
网友评论