首页 > 未分类 > Kubernetes安装笔记
2020
05-11

Kubernetes安装笔记

有两台VM,一台在美国(2CPU,4G,Ubuntu-18.04 LTS),一台在国内(2CPU,2G,Ubuntu-20.04 LTS)。分别尝试安装(单节点),国外的VM很简单,因为google资源可以随意访问。国内的VM,需要一些变通–使用阿里云提供的镜像仓库。

一、安装kubeadm和docker

  • 美国VM
  • 国内VM

二、初始化安装

  • 国外VM

直接运行kubeadm init进行默认初始化安装,会自动从gcr.io上拉取镜像。

  • 国内VM

需要先从国内镜像站点自行拉取镜像,然后运行kubeadm init进行默认安装

先查看版本信息

然后逐一从国内镜像站点拉取这些镜像,重命名。写了一个脚本,自动拉取,安装。

  • kubeadm init安装成功后,输出如下:

三、完成配置

Kubernetes 集群默认需要加密方式访问。所以,这几条命令,就是将刚刚部署生成的 Kubernetes 集群的安全配置文件,保存到当前用户的.kube 目录下,kubectl 默认会使用这个目录下的授权信息访问 Kubernetes 集群。

配置完后,就可以用kubectl get命令查看当前结点的状态了

四、配置网络插件

访问 https://kubernetes.io/docs/concepts/cluster-administration/addons/ 可以获取各种网络插件,这里以安装weave为例。首先需要获得Kubernetes的版本号,然后安装对应版本的插件。

五、部署容器存储插件

用数据卷(volume)把外面宿主机上的目录或者文件挂在进容器的Mount Namespace中,从而达到容器和宿主机共享这些目录或者文件的目的。很多存储项目都可以为Kubernetes提供持久化存储能力,如Ceph,GlusterFS,NFS。这里以Ceph为例。

  • 安装Ceph
  • 添加storageclass
  • 查看storageclass
  • 设置为默认storageclass

六、设置Master节点可运行运行POD

默认情况下,Master结点是不允许运行用户Pod的,Kubernetes依靠Taint/Toleration机制实现这一点。一个节点被加上一个Taint,那么所有Pod就不能在这个节点上运行,因为Kubernetes的Pod都有“洁癖”。除非Pod声明了Toleration,它才可以在这个节点上运行。

可以看到,Taints字段的键是“node-role.kubernetes.io/master”,而没有提供值。如果就是想部署一个单节点Kubernetes,可以删除这个Taint。

在“node-role.kubernetes.io/master”这个键后面加上了一个短横线“-”,这个格式就意味着移除所有以“node-role.kubernetes.io/master”为键的 Taint。

七、遇到的错误

1.安装docker时遇到无法启动docker service的问题

看Log,有一行提示:Failed to start docker.service: Unit docker.service is masked.

解决方法:

2.cgroup driver问题

kubeadm init开始安装的时候,有一行提示

意思是推荐docker使用systemd做为cgroup-driver,而当前(默认)使用的是cgroupfs。修改方法为:

3.修改cgroup-driver后无法启动Kubernetes

Kubernetes安装成功后如果修改了cgroup driver,会导致Kubernetes启动失败。通过日志查看发现:

原因是安装时Kubernetes用的cgroup-driver是cgroupfs,后来又改为systemd,造成不匹配。解决方法:修改Kubernetes的启动参数,指定cgroup-driver为systemd,与docker一致。

4.关闭swap

在使用kubeadm安装Kubernetes之前,需要禁用swap。

参考链接
1.https://developer.aliyun.com/mirror/kubernetes
2.https://zhuanlan.zhihu.com/p/46341911
3.https://time.geekbang.org/column/article/39724

最后编辑:
作者:Searky
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。