欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏
csdn:雷园的csdn博客
个人博客:雷园的个人博客
简书:雷园的简书
今日头条:来自底层程序员的仰望
应用版本多,环境乱七八糟?利用kubeadm快速构建k8s-1.18.5环境
开头说几句
- 最近接收了许多新的任务,在这个过程中也有很多的收获,希望把这些收获分享给大家。
- 本篇我们就来说说及其火热的k8s,希望大家可以有所收获!!!
为什么需要构建k8s集群环境
- 如题,无论我们的产品2b还是2c,通常来说我们都会有多个不同的版本已满足不同的需求。
- 以我的经验来说,我们通常会有开发环境(dev)、测试环境(test)、演示环境(show)、生产环境(product)。
- 有以上但不仅限于此,我们主要是体现“多”。
- 这么多环境部署及维护起来是相当费劲的,之前我们有使用docker来维护各个版本,但是还是要操作许多的命令。
为什么使用kubeadm来构建
- kubeadm是官方提供给我们的快捷部署方式,当然部署方式并不仅限于。
- 此部署方式不建议使用与生产环境。
正式开始
-
废话不多说了我们这就开始吧!!!
-
先来说说我们的硬件要求,我这边资源还算充足,开了六台虚拟机(CentOS7 4C 8G)用来搭建集群。
IP 域名 节点角色 192.168.2.130 k8s-master.imlcl.store Master 192.168.2.131 k8s-node5.imlcl.store Worker 192.168.3.131 k8s-node1.imlcl.store Worker 192.168.3.132 k8s-node2.imlcl.store Worker 192.168.3.133 k8s-node3.imlcl.store Worker 192.168.3.134 k8s-node4.imlcl.store Worker -
只用做公司内部的开发、测试环境使用,所以没有添加多个Master保证高可用,大家可以自行分配。
-
小伙伴们如果资源不足的话两个节点一主一从也是可以的,但是配置最少也要4c8g。
-
这里我使用了自己域名下的字域名进行解析,大家如果没有域名可以使用hosts配置实现。
开始安装
-
无论docker还是kubernetes的镜像都是在国外网站,而且国内阿里的镜像还没有更新到1.18.5,这里我为大家下载好了所有需要的东西,S我就可以。
-
首先我们下载安装所需的软件包,然后对系统进行简单的配置:
# 关闭防火墙 $ systemctl stop firewalld && systemctl disable firewalld #关闭selinux $ sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0 #关闭swap设置 $ swapoff -a $ yes | cp /etc/fstab /etc/fstab_bak $ cat /etc/fstab_bak |grep -v swap > /etc/fstab #解决流量路由不正确问题 $ cat <<EOF > /etc/sysctl.d/k8s.conf vm.swappiness = 0 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF # 使配置生效 $ modprobe br_netfilter $ sysctl -p /etc/sysctl.d/k8s.conf
-
所有机器配置完成后,我们就需要开始安装所需的软件了
# 安装docker $ yum -y install docker $ systemctl enable docker && systemctl start docker # 配置阿里k8s源 $ cat >> /etc/yum.repos.d/k8s.repo << EOF [kubernetes] name=kuberbetes repo baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ gpgcheck=0 EOF #安装kubelet/kubeadm/kubectl $ yum -y install kubelet kubeadm kubectl $ systemctl enable kubelet && systemctl start kubelet
-
如果上述还算顺利,那我们的机器中就安装好了kubelet kubeadm kubectl docker,接下来我们把软件包中的相关镜像导入进来:
# k8s基础组件 $ docker load -i k8s-imagesV1.18.5.tar # k8s web页面组件,为后面我们的构建dashboard服务作准备 $ docker load -i dashboard.tar # k8s网络组件 $ docker load -i flannel.tar
安装主节点:Master 192.168.2.130
-
修改kubelet配置默认cgroup driver
$ cat > /var/lib/kubelet/config.yaml <<EOF apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd EOF # 重启kubelet $ systemctl restart kubelet
-
测试我们的环境是否OK
$ kubeadm init phase preflight
-
测试OK后,我们需要对Master节点进行初始化:
$ kubeadm init --kubernetes-version=v1.18.5 --apiserver-advertise-address k8s-master.imlcl.store --pod-network-cidr=10.244.0.0/16
-
配置master认证
$ echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> /etc/profile $ source /etc/profile
-
此时不出意外我们的Master节点已经安装完成,不过我们还没有初始化网络组件,无法使我们的node节点加入到集群里。
-
之前我们已经把flannel网络组件导入到了docker中,现在我们对其进行初始化,flannel的配置文件有点多,同样我给大家总结到了软件包中(kube-flannel.yml)
$ kubectl apply -f kube-flannel.yml
-
现在我们可以看一下集群的状态了
kubectl get nodes
,可以看到我们Master的状态已经为Ready。
加入从节点作为worker
-
首先我们要到Master节点获取我们的集群加入口令
$ kubeadm token create --print-join-command ## out kubeadm join 192.168.2.130:6443 --token 5lcb30.hbomixs71d0ck14l --discovery-token-ca-cert-hash sha256:b52d85d8fb4e27a53433813f85f46b47632b27fec3ac5323d240e97a9e9b1413
-
下面这句就是我们要用的口令了,这时候我们只需要打开我们的各个worker节点,挨个执行这个口令即可自动加入集群
$ kubeadm join 192.168.2.130:6443 --token 5lcb30.hbomixs71d0ck14l --discovery-token-ca-cert-hash sha256:b52d85d8fb4e27a53433813f85f46b47632b27fec3ac5323d240e97a9e9b1413
-
这个口令是有一天的有效期,如果后面需要加入节点,就需要重新获取口令啦。
最后说几句
- 到这里为止呢,我们的kubernetes集群算是构建完成了。
- 很简单吧,这是因为我们使用了kubeadm,仅试用与开发、测试环境。
- 今天我们就说这么多,下一篇我们来说说如何安装和配置官方的Dashboard页面。
- 大家有任何问题都可以在评论区说出来大家一起讨论。
- 希望大家有所收获!!!
- 谢谢各位大佬!!!