k8s随着社区不断壮大国内使用率现在也是比较高的,常用的部署方式主要还是以二进制和kubeadm为主,当然1.13之前大部分人还是以二进制,但是随着版本更新kubeadm已经逐步适用于生成环境,由于kubeadm的简便部署相信以后使用率也会增加很多。今天主要是想总结一些常见的报错和解决方法思路希望能在日后大家使用过程中提供帮助,内容可能不会很完善,讲解不当之处望大家提宝贵意见多多指点,这篇文档主要以自身部署为主也会参考一些官网和其他博客汇总一部分,多说两句其实部署真心不是很难,主要还是要细心,很多时候碰到的错误后面解决时才发现原来是前面一些基础环境配置没有配好导致的。

1.问题描述:cordns一直重启logs报dial tcp 10.96.0.1:443: i/o timeout

(1)检查hosts,查看主机名和ip是否对应

(2)swap分区是否关闭(/etc/fstab注释swap行)

(3)检查防火墙和selinux是否关闭

(4)创建程序目录(这个是转载他人,实际并没有碰到过,如果碰到类似问题解决不了可以尝试)

mkdir -p /opt/kubernetes/{bin,cfg,ssl}
echo 'PATH=/opt/kubernetes/bin:$PATH' >>/etc/profile
source /etc/profile

2. init初始化不成功

这里简单说一下,因为这块碰到的问题比较杂

(1) 首先保证能科学**上网,如果无法科学**上网就要用国内的镜像,这里可以看日志具体情况具体解决,总结一点就是镜像原因导致的。

(2) 驱动类型,保证docker驱动与kube驱动一致

(3) vi /etc/sysctl.d/k8s-sysctl.conf

  net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
sysctl -p /etc/sysctl.d/k8s-sysctl.conf

3.使用kubeadm init 去初始化master node

注意你可能需要设置http代理,因为kubeadm init需要访问https://dl.k8s.io去获取package的信息;你可能还需要设置docker daemon的代理,因为kubeadm init要从http://k8s.gcr.io(这是google cloud的container registry)上pull一些image;你还需要设置no_proxy环境变量为master的IP。否则会报错:“Unable to update cni config: No networks found in /etc/cni/net.d。注意--pod-network-cidr=172.16.0.0/16这个参数,cidr的选取一定不要和你本地的网络有冲突。

4.kubeadm join一个新的worker node的时候报错:Unauthorized

这是因为你使用的token已经失效了,默认情况下,kubeadm init产生的token的有效期是24个小时;你肯定是在一天之后才kubeadm join的。你可以使用下面的命令来重新产生token:

kubeadm token create --print-join-command
 
5.0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate.

解决方法是安装flannel

有时候一个pod创建之后一直是pending,没有日志,也没有pull镜像,describe的时候发现里面有一句话: 1 node(s) had taints that the pod didn't tolerate.

直译意思是节点有了污点无法容忍,执行 kubectl get no -o yaml | grep taint -A 5 之后发现该节点是不可调度的。这是因为kubernetes出于安全考虑默认情况下无法在master节点上部署pod,于是用下面方法解决:

kubectl taint nodes --all node-role.kubernetes.io/master-
 
 

6.机器非正常关机,kubernetes无法启动

发现产生的原因可能跟docker启动不起来有关

/var/lib/docker下的应该是container启动时跟-v参数mount的文件夹相关,也可能跟一个启动了的container所创建的文件系统有关。但是container被rm后理应被删除,删不掉就是出问题了,原因可能是mount的文件被其他container-B或XX-B链接或挂载,...-B非正常退出(或某行为)导致docker以为这个文件还被引用着。需要手动解决:stop docker后手动删除即可,删除的方法只能是umount再rm

7.在增加kubernetes节点时,ERROR CRI]报错

在增加kubernetes节点时,冒出这个错误。

configmaps "kubelet-config-1.11" is forbidden: cannot get configmaps in the namespace "kube-system" [ERROR CRI]: unable to check if the container runtime at "/var/run/dockershim.sock" is running: fork/exec /usr/bin/crictl -r /var/run/dockershim.sock info: no such file or directory

解决办法:

卸载cri-tools yum remove cri-tools

8.Error: Package: kubelet-1.10.0-0.x86_64

这个是缺少依赖包,报错部分也有提示Requires: kubernetes-cni = 0.6.0,

yum -y install kubernetes-cni = 0.6.0

大部分常见问题也就这么多,部署主要参考官网基础环境正常的情况下碰到问题的概率真的很低,还是细心为主了解原理解决问题也会方便很多,后面如果碰到新的问题会慢慢加进来,不足之处望指点

kubeadm常见报错和解决方法的更多相关文章

  1. SpringBoot常见报错及解决方法

    问题一 Field redisUtil in com.sui.demo.controller.redisController required a bean of type 'com.sui.demo ...

  2. iOS将Unity导出的Xcode工程导入到另一个Xcode项目, 及常见报错的解决方法

    demo下载地址 http://pan.baidu.com/s/1pLcpKpl 1.Unity导出工程时设置bundle id要与项目一致 2.修改bit code为NO 3.删除Main.stor ...

  3. struts2学习笔记——常见报错及解决方法汇总(持续更新)

    操作环境:(1)Tomcat 7.0.72.0 (2)OS Name: Windows 7  (3)JVM Version:  1.8.0_25-b18  (4)eclipse Version: Ke ...

  4. linux运维、架构之路-PHP编译常见报错及解决方法

    1. configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution 复制 ...

  5. Eclipse 中的Maven常见报错及解决方法

    1.不小心将项目中的Maven Dependencies删除报错 项目报错: 点击Add Library,添加Maven Managed Dependencies又提示如下: 在这个时候需要项目右键: ...

  6. web报表工具FineReport使用中遇到的常见报错及解决办法(二)

    web报表工具FineReport使用中遇到的常见报错及解决办法(二) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘 ...

  7. java常见报错及解决

    Java常见报错信息: Java 常见异常种类 Java Exception: 1.Error  2.Runtime Exception 运行时异常 3.Exception  4.throw 用户自定 ...

  8. java报表工具FineReport使用中遇到的常见报错及解决办法(三)

    这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有.有报错要看日志.下面简单罗列下常见的问题,大多 ...

  9. ionic 3 常见报错及解决办法

    用ionic 3开发也有一段时间了,现在总结下开发中遇到的报错,以及解决办法: ERROR DOMException: Failed to execute 'setAttribute' on 'Ele ...

随机推荐

  1. 什么时候修改class

    点击按钮class发生改变 <html> <head> <meta http-equiv="Content-Type" content="t ...

  2. json中定义数组

    我们经常会看到在js中定义普通函数: function f1(a,b){ console.log(a+b); } f1(); 今天我们看一下如何在json里边定义函数并调用: var json = { ...

  3. twaver拓扑图拖拽后保存json数据

    功能描述:拓扑图.对节点进行拖拽,序列化获取拓扑图信息,保存到本地localStorage,刷新页面,执行反序列化,从本地获取之前保存的数据,展现之前拖拽后的拓扑 拓展:此处存储用的是web本地存储l ...

  4. css background 背景知识详解

    background 背景属性 我们知道元素有前景色color,与之对应的还有背景色,通过background我们可以为元素添加实色(background-color)和任意多个背景图片(backgr ...

  5. Java入门到精通——调错篇之Spring2.5利用aspect实现AOP时报错: error at ::0 can't find referenced pointcut XXX

    一.问题描述及原因. 利用Aspect注解实现AOP的时候出现了error at ::0 can't find referenced pointcut XXX.一看我以为注解写错了,结果通过查询相关资 ...

  6. Android学习——ViewPager的使用(三)

    这一节来介绍一下在ViewPager中常用到的一个控件,标题栏. 标题栏分为PagerTabStrip和PagerTitleStrip两种,用法类似,这里介绍第一种. 具体做法 在layout文件中的 ...

  7. Rational ClearCase 系列

    Base + UCM 系列参考:http://blog.csdn.net/hhg208/article/details/5749050

  8. Git学习1:Git起步

    本系列文章部分原理和命令相关内容是从 https://git-scm.com/book/zh/v2 摘录,软件实际使用是总结自己的实践经验成文. 1. 关于版本控制 版本控制是一种记录一个或若干文件内 ...

  9. win10与子系统ubuntu之间互访文件

    在window10的store里面 搜索ubuntu,下载,可以安装 注意: 初次打开有许多软件都没安装,可以新进行 sudo apt-get update,之后在进行其他的操作 1.下载的子系统ub ...

  10. Blob, Uint8Aray, atob/btoa in lt IE9 browser

    Blob, Uint8Aray, atob/btoa in lt IE9 browser 标签(空格分隔): compatibility 之前写的代码全部在Chrome调试,用IE打开发现各种问题. ...