用Ubuntu和树莓派系统部署kubernetes集群后的一些心得
方案
环境
- 操作系统:Ubuntu 16.04 & Raspbian GNU/Linux 9(Stretch Desktop)
- kubernetes :1.15.3
- flannel:0.11.0
- docker:docker-io 18.09.1
节点部署
将运行Ubuntu的PC机作为master节点,树莓派作为普通的slave节点
踩过的一些坑
Ubuntu上部署k8s的线上资料比较多,安装的时候基本比较顺利,但是树莓派是基于arm架构实现的,因此资料也比较少,出现的问题需要自己找问题解决。下面就把遇到过的问题和解决方法分类罗列一下。
镜像缺少
由于高墙的原因,原本可以自动pull的镜像需要我们在各个节点手动下载。
需要在arm节点上手动下载的镜像有:
- k8s.gcr.io/kube-proxy
- quay.io/coreos/flannel
- k8s.gcr.io/pause
需要注意的是,镜像版本要对应master节点的kubernetes版本。对应镜像,我执行的命令分别为:
docker pull docker.io/mirrorgooglecontainers/kube-p roxy-arm:v1.15.3
docker pull quay.io/coreos/flannel:v0.11.0-arm
docker pull anjia0532/google-containers.pause-arm:3.1
由于kube-proxy和pause拉的是国内的镜像,需要重新打回k8s.gcr.io的镜像tag,执行如下:
docker tag mirrorgooglecontainers/kube-proxy-arm:v1.15.3 k8s.gcr.io/kube-proxy:v1.15.3
docker tag anjia0532/google-containers.pause-arm:3.1 k8s.gcr.io/pause:3.1
docker版本不一致
最开始ubuntu上安装的是docker的io版本,而树莓派上安装的是docker的ce版本,于是树莓派加入集群后,master一直无法启动slave节点中的pod,用kubectl describe pods --namespace=kube-system命令查看pod的日志,在events中发现如下错误:
Error response from daemon: unable to find "net_prio" in controller set: unknow...
谷歌之后发现是可能是因为docker版本不同导致的问题,于是将树莓派中的docker替换成io版本,就没有这条错误。
kubernetes版本不一致
通常slave节点上的kubernetes版本不得高于master节点上的,于是将所有的节点上的kubeadm、kubectl
、kubelet统一成一个版本的。
感悟
为了部署这个混合架构的集群花费了将近一周的时间,还是认识到了一些东西。
此类软件部署安装需要很多步骤,而软件是在经常更新的,于是网上的教程往往只能适用于一时,有些源可能已经不能使用了,因此,尽量去参考官方教程,获得最新的部署步骤。
对于一些被墙了的镜像源,可以寻找国内的镜像源,搜索镜像的名称即刻得到相关的源,同时还可能需要修改镜像版本编号。
遇到错误要学会看系统日志并且分析错误原因,这样才是根本学习之道,而不是只会把错误内容进行搜索,往往解决方法是过时的,长久之后,也只会学个皮毛,遇到一个奇怪的问题就措手无策了。根据错误信息,挨个解决,总会成功实现的。
参考资料:
https://blog.csdn.net/qq_40806970/article/details/97245650
https://blog.csdn.net/liukuan73/article/details/83150473
用Ubuntu和树莓派系统部署kubernetes集群后的一些心得的更多相关文章
- 和我一步步部署 kubernetes 集群
和我一步步部署 kubernetes 集群 本系列文档介绍使用二进制部署最新 kubernetes v1.6.1 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群: 在部署的过程中, ...
- 使用Rancher的RKE快速部署Kubernetes集群
简要说明: 本文共涉及3台Ubuntu机器,1台RKE部署机器(192.168.3.161),2台Kubernetes集群机器(3.162和3.163). 先在Windows机器上,将rke_linu ...
- 二进制包部署Kubernetes集群
今天这篇文章教给大家如何快速部署一套Kubernetes集群.K8S集群部署有几种方式:kubeadm.minikube和二进制包.前两者属于自动部署,简化部署操作,我们这里强烈推荐初学者使用二进制包 ...
- 二进制部署 Kubernetes 集群
二进制部署 Kubernetes 集群 提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernet ...
- CentOS上手工部署kubernetes集群
本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...
- 高可用Kubernetes集群-15. 部署Kubernetes集群统一日志管理
参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsear ...
- 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台
参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ...
- Kubernetes探索学习001--Centos7.6使用kubeadm快速部署Kubernetes集群
Centos7.6使用kubeadm快速部署kubernetes集群 为什么要使用kubeadm来部署kubernetes?因为kubeadm是kubernetes原生的部署工具,简单快捷方便,便于新 ...
- 使用Kubespray部署Kubernetes集群
转载请标明出处: http://blog.csdn.net/forezp/article/details/82730382 本文出自方志朋的博客 Kubespray是Google开源的一个部署生产级别 ...
随机推荐
- Java的强引用、软引用、弱引用、虚引用
背景 工程中用到guava的本地缓存.它底层实现和API接口上使用了强引用.软引用.弱引用.所以温故知新下,也夯实下基础. 预备知识 先来看下GC日志每个字段的含义 Young GC示例解释 [GC ...
- SpringAop切面实现日志记录
SpringAop切面实现日志记录代码实现:https://www.cnblogs.com/wenjunwei/p/9639909.html 问题记录 1.signature.getMethod(). ...
- hadoop启动脚本
记录一下一个简单的hadoop启动脚本 就是启动zookeeper集群,hadoop的HDFS和YRAN的脚本 start-cluster.sh 关于关闭的脚本,只需要顺序换一下,然后将start改为 ...
- 解决Ubuntu配置nginx出现的问题
Ubuntu18.04配置nginx出现的各种错误 缺少pcre库 编译nginx 出现错误 安装pcre库,出现错误 手动编译安装pcre库 (1)下载并解压pcre库 wget https://f ...
- SMB远程代码执行漏洞(CVE-2020-0796)分析、验证及加固
这几天有点忙,CVE-2020-0796出来了,没静下心来关注一下,显得太不尊重这个漏洞了,今天周末,关注一下,水一篇. 一.漏洞描述 漏洞公告显示,SMB 3.1.1协议 ...
- pdfFactory全景手柄使用方法介绍
当文档中存在一些照片,或使用的字体过小时,大家可能会使用放大的功能,将文档的页面进行放大处理.此时,页面就会仅显示局部,为了查看页面的其他内容,就要使用到全景手柄来移动页面. pdfFactory的全 ...
- guitar pro系列教程(二十三):如何使用Guitar Pro制作扫弦
前面的章节小编和大家讲解了很多关于Guitar Pro的使用功能,本章节我们将还是采用图文结合的方式和大家讲解如何使用Guitar Pro 制作扫弦,感兴趣的朋友可以进来看看哦. 扫弦的概念 对于很多 ...
- xcode6新建pch文件过程
h1, h2, h3, h4, h5, h6, p, blockquote { margin: 0; padding: 0 } body { font-family: "Helvetica ...
- 我给 Apache 顶级项目提了个 Bug
这篇文章记录了给 Apache 顶级项目 - 分库分表中间件 ShardingSphere 提交 Bug 的历程. 说实话,这是一次比较曲折的 Bug 跟踪之旅.10月28日,我们在 GitHub 上 ...
- yii2.0上传图片
model: 1 use Yii; 2 public $imageUpload; 3 public function rules() 4 { 5 return [ 6 [['imageUpload'] ...