搭建Kubernates集群笔记(二)--- 安装 Docker 和 k8s

本文详细记录了在root账号下搭建Kubernetes集群的步骤,包括配置yum源、关闭防火墙和Swap、通过官方或阿里云仓库安装Docker、配置阿里云镜像以及安装Kubernetes的过程。在安装过程中,特别强调了关闭Swap和匹配Docker与k8s的Cgroup驱动的重要性。
摘要由CSDN通过智能技术生成

搭建Kubernates集群笔记(二)— 安装 Docker 和 k8s


这章节的操作请在 root 账号下进行,在虚拟机中使用 sudo -s即可切换到 root 账号。


一、配置yum源

不建议使用 CentOS 7 自带的 yum 源,因为安装软件和依赖时会非常慢甚至超时失败,除非使用魔法。执行下方命令使用阿里云的源:

[root@master docker]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
[root@master docker]# yum makecache

PS:如果提示:wget: command not found,先运行yum -y install wget安装wget命令。


二、关闭 防火墙 和 Swap

防火墙一定要提前关闭,否则在后续安装K8S集群的时候是个 trouble maker。执行下面语句关闭,并禁用开机启动:

[root@master docker]# systemctl stop firewalld & systemctl disable firewalld

关闭Swap:
类似ElasticSearch集群,在安装K8S集群时,Linux的Swap内存交换机制是一定要关闭的,否则会因为内存交换而影响性能以及稳定性。有两种方法关闭Swap:

  1. 执行 swapoff -a 可临时关闭,但系统重启后恢复。
  2. 编辑 /etc/fstab,用#注释掉包含 swap 的那一行即可,重启后可永久关闭。每个人的机子可能不同,我机子上包含swap的那行被注释后是这样的:
UUID=1c419d6c-5064-4a2b-953c-05b2c67edb15 /     xfs     defaults        0 0
# /swapfile none swap defaults 0 0

PS:可用 Finalshell 下方文件视图找到 /etc/fstab ,双击编辑后保存。

或执行以下命令关闭:

[root@master docker]# sed -i  '/ swap / s/^/#/' /etc/fstab

因为方法2虽然是永久关闭,但需要重启才能生效,所以我们可以各执行一次方法1和方法2。随后使用top命令查看 Swap 的情况,如果显示如下则表示关闭成功(0 total,0 free):

top命令

三、安装Docker

方法一:通过官方库安装

依次运行下方语句,通过官方库安装 Docker,官方文档地址:Install Docker Engine on CentOS

[root@master docker]# sudo yum install -y yum-utils
[root@master docker]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@master docker]# yum makecache
[root@master docker]# sudo yum install docker-ce docker-ce-cli containerd.io -y   

方法二:通过阿里云的 Docker 仓库安装

[root@master docker]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master docker]# yum makecache
[root@master docker]# yum install docker-ce docker-ce-cli containerd.io -y

安装过程漫长,泡杯咖啡等待过程结束。完成之后跑一下下方的命令,能显示版本号就说明安装成功了。

[root@master docker]# docker --version

启动Docker并激活开机启动:

[root@master docker]# systemctl start docker & systemctl enable docker

最后跑一下 docker run hello-world 命令看看效果如何:

docker run hello-world


四、Docker配置阿里云镜像

参考资料:docker配置阿里云镜像
我使用的是中国科学技术大学的镜像地址:https://docker.mirrors.ustc.edu.cn

PS:以下操作可直接在 Finalshell 下方的文件视图对应的目录中,右键-新建-文件,进行编辑保存。

使用如下命令创建/修改daemon.json文件:

[root@master docker]# sudo vi /etc/docker/daemon.json

PS:不加sudo的命令,在保存文件时有Can't open file for writing错误,查询此篇文章后,加上sudo解决此问题:linux vim操作提示:“Can’t open file for writing”或“operation not permitted”的解决办法

在其中加入以下内容:

{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
"exec-opts": ["native.cgroupdriver=systemd"]
}

第一行为添加镜像地址,第二行指定 Docker 的 Cgroupsystemd。之后使用下方命令重载内容:

[root@master docker]# systemctl daemon-reload
[root@master docker]# systemctl restart docker

五、安装 Kubernetes

文档推荐:

  1. 官方(右上角可以切换中文,但中文文档不全):Creating a cluster with kubeadm
  2. Kuboard:Kubernetes教程

因为有Q的存在,官方仓库无法使用,我们使用阿里源的仓库(以下命令一起复制/黏贴/执行):

[root@master docker]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF
  • 关闭 SELinux(SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则))。
[root@master docker]# setenforce 0
[root@master docker]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
  • 安装 k8s 组件(kubelet、kubeadm、kubectl)
[root@master docker]# yum install -y kubelet kubeadm kubectl
  • 启动 kubelet
[root@master docker]# systemctl enable kubelet && systemctl start kubelet

这一步有区别,网络上说这次启动会报错:

如果此时执行 service status kubelet 命令,将得到 kubelet 启动失败的错误提示,请忽略此错误,因为必须完成后续步骤中 kubeadm init 的操作,kubelet 才能正常启动。

但本地测试并没有问题,不清楚是否是因为 Vagrant 虚拟机的问题,可能高版本已忽略此问题。

  • 配置 kubelet 的 cgroup drive

这一步与网络资源也有区别,网络上需要修改 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件使得k8s和docker的Cgroup相同,但在我本机此文件不存在,可能高版本已没有这份文件了。

确保 docker 的 cgroup drive 和 kubelet 的 cgroup drive 一样,否则在后续kubeadm init时,会有“cgroupfs”警告,参考资料:kubeadm初始化警告“cgroupfs”解决

k8s默认使用systemd,这里我们只需要修改 Docker 的就可以了,参考资料:容器运行时

在第四步中,我们已经修改 docker 的 Cgroup 内容了,这里只需要调用下方命令确认 docker 的 Cgroup 即可,打印结果应该为:Cgroup Driver: systemd

[root@master docker]# docker info | grep -i cgroup

如果有WARNING: bridge-nf-call-iptables is disabledWARNING: bridge-nf-call-ip6tables is disabled提示,请再运行以下对应的命令:

[root@master docker]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
[root@master docker]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables

到此,虚拟机中的所需程序已安装完成,可以将当前虚拟机package了,这个新的BOX我命名为centos/k8s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值