如果原来链接安装不成功的话可以参考一下我这版的。
简述
kubeadm 二进制部署 k8s集群,整个部署过程相对比较繁琐,但是通过安装有助于入门者初步了解k8s的组件、网络等信息,因此还是需要了解的。
而本文要推荐的是一款可快速部署多节点高可用K8S集群的软件:K8SEASY,同时内置了Dashboard、Prometheus、Grafana、node-exporter等组件,简单易用。
注意:
1.所有节点都要求内核版本>4.2
2.所有节点 新节点也要提前准备installer、kubernetes-server-linux-amd64.tar.gz、pack.2020.10.02.bin等安装资源。
其他优点如下:
一键安装,安装一个系统只需要 3 分钟, 安装好以后完整的监控也一并装好,可以直接使用。(不止支持单master 还支持3master 高可用方案)
新版本发布,支持 1.19.x 新增nginx-ingress, helm 组件, 支持自动发现。
完全不需要配置,一键完成,包括集群也是一键生成。
不需要下载任何镜像,所有需要的模块组件都已经准备。
安装所有的组件是以系统服务方式安装,启动停止方便。
完美支持Centos7.0 和Ubuntu 16.04/18.04。
内核升级(这种方法我本人只能升级到3.1所以我采用另一种方法)供参考
1.离线升级内核
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.107-1.el7.elrepo.x86_64.rpm
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.107-1.el7.elrepo.x86_64.rpm
yum localinstall -y kernel-lt-5.4.107-1.el7.elrepo.x86_64.rpm kernel-lt-devel-5.4.107-1.el7.elrepo.x86_64.rpm
2.设置grub内核版本
# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
#由saved改为0
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
3.重新创建内核配置
grub2-mkconfig -o /boot/grub2/grub.cfg
4.重启并查看内核
# uname -a
Linux prod-166-203-252 5.4.107-1.el7.elrepo.x86_64 #1 SMP Sat Mar 20 09:47:18 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
第二种内核升级方式
1、查看当前内核版本
$ uname -r
3.10.0-514.el7.x86_64
$ uname -a
Linux k8s-master 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
2、升级内核
更新yum源仓库
$ yum -y update
启用 ELRepo 仓库
ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。
ELRepo 聚焦于和硬件相关的软件包,包括文件系统驱动、显卡驱动、网络驱动、声卡驱动和摄像头驱动等。
#导入ELRepo仓库的公共密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#安装ELRepo仓库的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
3、查看可用的系统内核包
可以看到4.4和4.18两个版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
elrepo-kernel | 2.9 kB 00:00:00
elrepo-kernel/primary_db | 1.8 MB 00:00:03
Available Packages
kernel-lt.x86_64 4.4.155-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.155-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.155-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.155-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.155-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.155-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.155-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 4.18.7-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 4.18.7-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 4.18.7-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 4.18.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 4.18.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 4.18.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 4.18.7-1.el7.elrepo elrepo-kernel
perf.x86_64 4.18.7-1.el7.elrepo elrepo-kernel
python-perf.x86_64 4.18.7-1.el7.elrepo elrepo-
4、安装最新版本内核
$ yum --enablerepo=elrepo-kernel install kernel-ml
--enablerepo 选项开启 CentOS 系统上的指定仓库。默认开启的是 elrepo,这里用 elrepo-kernel 替换。
5、设置 grub2
内核安装好后,需要设置为默认启动选项并重启后才会生效
查看系统上的所有可用内核:
$ sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (4.18.7-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-862.11.6.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-063ec330caa04d4baae54c6902c62e54) 7 (Core)
设置新的内核为grub2的默认版本
服务器上存在4 个内核,我们要使用 4.18 这个版本,可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置
方法1、通过 grub2-set-default 0 命令设置
其中 0 是上面查询出来的可用内核
grub2-set-default 0
方法2、编辑 /etc/default/grub 文件
设置 GRUB_DEFAULT=0,通过上面查询显示的编号为 0 的内核作为默认内核:
$ vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
生成 grub 配置文件并重启
$ grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.7-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.18.7-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.11.6.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.11.6.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-063ec330caa04d4baae54c6902c62e54
Found initrd image: /boot/initramfs-0-rescue-063ec330caa04d4baae54c6902c62e54.img
done
$ reboot
6、验证
$ uname -r
4.18.7-1.el7.elrepo.x86_64
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
集群部署
1.下载k8seasy组件
wget http://dl.k8seasy.com/installer
wget http://dl.k8seasy.com/kubernetes-server-linux-amd64.tar.gz
wget http://dl.k8seasy.com/pack.2020.10.02.bin
其中:
installer 是安装工具。
kubernetes-server-linux-amd64.tar.gz 可官网下载,须是amd64平台。
pack.2020.10.02.bin 是镜像文件。
2.创建密钥
如果报错的话,应该是文件没有权限,给他加一个权限
chmod installer 777
./installer --genkey -hostlist=10.166.203.252
3.创建集群
#如果是多个master,可以使用如下命令
./installer -kubernetestarfile kubernetes-server-linux-amd64.tar.gz -masterip 10.166.203.252,10.166.203.253,10.166.203.254
# 单master
./installer -kubernetestarfile kubernetes-server-linux-amd64.tar.gz -masterip 10.166.203.252
# 以下是单master部署过程打印信息
master: 10.166.203.252
IP: 10.166.203.252 Eth: ens192
1> Upgrade system.
2> Install etcd.
3> Install flanneld.
4> Install haproxy.
5> Update kubernets env.
6> Install K8S API Server.
7> Install K8S Controller Server.
8> Install K8S Scheduler Server.
9> Install Docker.
...............
10> Update Kubeadm env.
11> Install kubelet.
12> Install K8S Proxy.
13> Install coredns.
14> Install monitoring & dashboard.
15> Install Helm.
16> Install nginx-ingress.
17> Install localwebproxy.
请使用浏览器 访问 alertmanager http://10.166.203.252:8080
请使用浏览器 访问 grafana http://10.166.203.252:8081 默认用户名 admin 默认密码 admin
请使用浏览器 访问 prometheus http://10.166.203.252:8082
请使用浏览器 访问 node_export http://10.166.203.252:9100
请使用浏览器 访问 dashboard http://10.166.203.252:10000
You can find more detail about alertmanager by visiting http://10.166.203.252:8080
You can find more detail about grafana by visiting http://10.166.203.252:8081 the default user: admin pass: admin
You can find more detail about prometheus by visiting http://10.166.203.252:8082
You can find more detail about node_export by visiting http://10.166.203.252:9100
You can find more detail about dashboard by visiting http://10.166.203.252:10000
18> Install localwebproxy.
已经复制了一个配置文件 lens.kubeconfig 在当前目录,这个配置文件可以被 各种管理工具(如lens) 直接使用
请在 /etc/hosts 文件里加入 如下内容
10.166.203.252 s7400036261.lens.k8seasy.com
其中10.166.203.252 为本机的IP, 也可以为任何管理工具直接能访问的本机IP (如本机有多个ip 可以任选一个
K8Seasy is a tools that can help you quickly deploy Kubernetes clusters to local and cloud environmental.
K8S version: 1.11.3-1.18
installer version: 1.0.0.004
Packfile version: 2020.10.02.001
Packfile: pack.2020.10.02.bin
Packfile md5sum: 06222ec7e9dfd17efe318e94540c019d
Build Time:
Git Hash:
Website: http://www.k8seasy.com https://github.com/xiaojiaqi/k8seasy_release_page
Feature Request/Bug Report Form: https://github.com/xiaojiaqi/k8seasy_release_page/issues
Email: k8seasy@gmail.com
License: Personal non-commercial use. License cannot be used either directly or indirectly for business purposes.
从service中可以看到dashboard、alertmanager、grafana、node-exporter都已经内置。
5.加入新节点
#将密钥复制到新节点
cp ../k8skey.pem ./
#将机器加入集群
./installer -kubernetestarfile kubernetes-server-linux-amd64.tar.gz -masterip 10.166.203.252
#如果是多个master集群,可以使用如下命令加入集群
./installer -kubernetestarfile kubernetes-server-linux-amd64.tar.gz -masterip 10.166.203.252,10.166.203.253,10.166.203.254
注意:新节点也要提前准备installer、kubernetes-server-linux-amd64.tar.gz、pack.2020.10.02.bin等安装资源。
6.一键卸载
# ./installer -uninstall
1> uninstall kube-apiserver
2> uninstall kube-controller-manager
3> uninstall kube-proxy
4> uninstall kube-scheduler
5> uninstall kubelet
6> uninstall flanneld
7> uninstall haproxy
8> uninstall docker
9> uninstall etcd
10> uninstall localwebproxy
It's done.