k8s 搭建过程总结
从今年年初就陆陆续续搭建过 1.13 ,1.15 版本,每次搭建都要在网上找 blog,自己虽有总结,却总不完善,现在(2019 年 9 月 24 日) 1.16 版本已经发布,希望此次能有一份完善的总结。
一、安装虚拟机
我使用的 VMware
安装的 Centos 7
最小安装,这个过程不再详述,属于基本操作,网上资源也很多。
二、配置虚拟机
改 yum 源
我们需要安装很多软件:kubectl,kubelet,kubeadm 等等
不建议使用 CentOS 7 自带的 yum 源,因为安装软件和依赖时会非常慢甚至超时失败。这里,我们使用阿里云的源予以替换,执行如下命令,替换文件/etc/yum.repos.d/CentOS-Base.repo
:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache // 这一步有点久
当然,最小安装没有安装 wget 工具,我们需要先安装:
yum install -y wget
- 阿里云 k8s 专用 源:
http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
- 官方源:
http://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/
关闭防火墙
CentOS 7 默认开启防火墙,k8s Master
和 Node
会有大量的网络通信,这些通信经过防火墙,安全的做法是在防火墙上配置各组件需要相互通信的端口号,但是比较麻烦,以后有空再进行补充。
我们默认我们有安全的内部网络环境——自己电脑开虚机,关闭防火墙。
[root@localhost ~]# systemctl stop firewalld & systemctl disable firewalld
[1] 10341
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
禁用 SELinux
,让容器可以获取主机的文件系统
[root@root ~]# setenforce 0
[1]+ Done systemctl stop firewalld
实际上,是更改了 /etc/sysconfig/selinux
文件配置,因此可以直接去修改该文件:
SELINUX=disabled
- 需要重启生效
关闭内存交换
类似 ElasticSearch 集群,在安装 K8S 集群时,Linux 的 Swap 内存交换机制是一定要关闭的,否则会因为内存交换而影响性能以及稳定性。这里,我们可以提前进行设置:
- 执行
swapoff -a
可临时关闭,但系统重启后恢复 - 编辑
/etc/fstab
,注释掉包含swap
的那一行即可,重启后可永久关闭,如下所示:
/dev/mapper/centos-root / xfs defaults 0 0
UUID=20ca01ff-c5eb-47bc-99a0-6527b8cb246e /boot xfs defaults 0 0
# /dev/mapper/centos-swap swap
或直接执行:sed -i '/ swap / s/^/#/' /etc/fstab
关闭成功后,使用 top 命令查看,如下图所示表示正常:
安装 docker
安装所需的软件包。yum-utils 提供了 yum-config-manager 效用,并 device-mapper-persistent-data 和 lvm2 由需要 devicemapper 存储驱动程序。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用以下命令来设置稳定的存储库—— 我们使用阿里云的源
[root@root ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@root ~]# yum makecache
安装最新版 docker
yum install docker-ce -y
启动 Docker
启动 Docker 服务并激活开机启动:
systemctl start docker & systemctl enable docker
运行一条命令验证一下:
docker run hello-world
安装 k8s
配置 k8s yum 源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装 3 个核心软件
yum install -y kubelet kubeadm kubectl
配置 kubelet 的 cgroup drive
确保 docker 的 cgroup drive 和 kubelet 的 cgroup drive 一样:
启动 kubelet
注意,根据官方文档描述,安装 kubelet、kubeadm、kubectl 三者后,要求启动 kubelet:
systemctl enable kubelet && systemctl start kubelet
kubeadm 配置
kubeadm config print init-default > init.default.yaml
更改其中关键配置
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
下载 kubernetes 相关镜像
kubeadm config images pull --config=init-config.yaml
之前总是搭梯子,或者从网盘里获取别人的镜像,其实国内有现成的镜像托管
echo '{"registry-mirrors":["https://registry.docker.cn.com"]}' > /etc/docker/daemon.json
拉取镜像:
kubeadm config images pull --config=init-config.yaml
途中终端输出发现 docker 版本不能用 最高支持 18.09
先卸载:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:
一种。列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序,并被截断:
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.2-3.el7 @docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
通过其完全合格的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如,docker-ce-18.09.1。
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
我们的就是:$ sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
继续
拉取镜像:
kubeadm config images pull --config=init-config.yaml
初始化
kubeadm init --config=init-config.yaml
添加 dashboard 组件
TODO
参考
- 从零开始搭建 Kubernetes 集群(一、开篇)
- Kubernetes 权威指南(第四版)
- docker 官方文档
- 国内免翻墙预下载 kubernetes 镜像
- 原文作者:战神西红柿
- 原文链接:https://tomatoares.github.io/posts/cloud/k8s-%E6%90%AD%E5%BB%BA%E8%BF%87%E7%A8%8B%E6%80%BB%E7%BB%93/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。