目录
- 一、k8s 集群平台规划
- 1. 单 master 集群
- 2. 多 master 集群(推荐)
- 二、集群环境硬件配置要求
- 三、k8s 集群搭建(Kubeadm 方式)
- 1. 主机准备
- 2. 系统初始化
- 3. Docker 的安装
- 4. 添加阿里云 yum 源
- 5. kubeadm、kubelet、kubectl 的安装
- 6. 在 Master 节点中部署集群
- 7. 将 node 节点加入集群
- 8. 部署 CNI 网络插件
- 四、方法总结
2. 多 master 集群(推荐)
包含多个 master 节点,在该集群中,master 通过负载均衡对 node 节点进行管理。
多 master 集群也称为高可用
的 master 集群,即使其中一个 master 节点出现了问题,也不会影响到其他节点。
二、集群环境硬件配置要求
提示:由于此处是基于虚拟机进行演示操作的,所以以下配置适用于基于虚拟机的测试环境使用,如果是基于服务器的生产环境则该配置需要更高。
master 节点:
- CPU 两核及以上
- 内存 4G 及以上
- 硬盘 20G 及以上
node 节点,作为“具体做事”的节点,它的配置要求会更高:
- CPU 四核及以上
- 内存 8G 及以上
- 硬盘 40G 及以上
三、k8s 集群搭建(Kubeadm 方式)
Kubeadm 是 k8s 的部署工具,它提供了 kubeadm init
和 kubeadm join
,专用于快速部署 k8s 集群,它能通过两条指令完成一个 Kubenetes 集群的搭建。Kubeadm 部署方式的优点是降低了部署门槛,部署方式快捷且简单;但缺点是屏蔽了诸多细节,遇到问题难以排查是哪里出现了问题。
注意:下文中的操作步骤,除特别说明在哪个节点操作之外,未说明的均表示该操作在所有节点都得执行。
1. 主机准备
准备三台虚拟机,分别安装 CentOS 系统。一台作为 master 节点,另两台作为 node 节点,且每台虚拟机有自己的专属 IP 地址。
虚拟机的创建和配置注意以下几点:
- 硬件按照上文要求进行配置;
- 虚拟机之间可以进行网络互通;
- 虚拟机可以访问外网,便于下载镜像;
- 安装好 wget 工具
yum install wget
; - 禁止 swap 分区。
2. 系统初始化
第一步:关闭防火墙
<code style="margin-left:0">#临时关闭 systemctl stop firewalld #永久关闭 systemctl disable firewalld</code>
第二步:关闭 selinux
<code style="margin-left:0">#永久关闭 sed -i '/selinux/s/enforcing/disabled/' /etc/selinux/config #临时关闭 setenforce 0</code>
第三步:关闭 swap
<code style="margin-left:0">#临时关闭 swapoff -a #永久关闭 sed -ri 's/.*swap.*/#&/' /etc/fstab</code>
第四步:设置主机名称,使用命令 hostnamectl set-hostname 主机名
,如下三台主机分别设置为:
<code style="margin-left:0">hostnamectl set-hostname master hostnamectl set-hostname node1 hostnamectl set-hostname node2 #查看当前主机名称 hostname</code>
第五步:在master
节点中添加 hosts,即节点 IP地址+节点名称;
<code style="margin-left:0">cat >> /etc/hosts << EOF 192.168.200.132 master 192.168.200.133 node1 192.168.200.134 node2 EOF</code>
第六步:将桥接的 IPv4 流量传递到 iptables 的链(所有节点都设置);
<code style="margin-left:0">#设置 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF #使其生效 sysctl --system</code>
第七步:时间同步,让各个节点(虚拟机)中的时间与本机时间保持一致。
<code style="margin-left:0">yum install ntpdate -y ntpdate time.windows.com</code>
3. Docker 的安装
Kubernetes 默认容器运行时(CRI)为 Docker,所以需要先在各个节点中安装 Docker。
docker 的详细安装步骤往期文章已有讲述,此处不再赘述。详情参见:
【云原生 • Docker】docker 环境搭建、docker与容器常用指令大全
安装 Docker 后,之后的操作均需在 docker 服务开启的前提下进行 systemctl start docker
。
4. 添加阿里云 yum 源
此步骤是为了便于今后的下载,在每个节点中执行以下配置;
<code style="margin-left:0">cat > /etc/yum.repos.d/kubernetes.repo << EOF [Kubernetes] name=kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF</code>
5. kubeadm、kubelet、kubectl 的安装
此处指定版本为 1.18.0,如果不指定默认下载最新版本。
<code style="margin-left:0">#下载软件 yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 #开机自启动 systemctl enable kubelet</code>
安装成功如下:
6. 在 Master 节点中部署集群
在 master
节点中执行以下命令,注意将 master 节点 IP 和 kube 版本号修改为自己主机中所对应的。
<code style="margin-left:0">kubeadm init \ --apiserver-advertise-address=192.168.200.132 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16</code>
此步骤执行完成之后,使用命令docker images
查看系统中的镜像,可以我们需要的镜像均已安装完成。
查看提示信息,看到 initialized successfully 说明我们 master 节点上的 k8s 集群已经搭建成功;
7. 将 node 节点加入集群
查看上一步执行成功后的提示信息,可以看到系统给了我们两条命令;
这两条命令分别表示:
① 开启 kubectl 工具的使用(该命令在master节点中执行
)。
<code style="margin-left:0">mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config</code>
② 将 node 节点加入 master 中的集群(该命令在工作节点node中执行
)。
<code style="margin-left:0">kubeadm join 192.168.200.132:6443 --token pahgrt.7gn13u88wz4f89an \ --discovery-token-ca-cert-hash sha256:7f73daa421d7564a6f813985a03f860350a923967d05cd955f8223d56200eb5b</code>
分别在 master 节点中执行第 ① 条命令,在各个 node 节点中执行第 ② 条命令;
执行完成之后在 master 节点中使用命令 kubectl get nodes
查看此时集群中的工作节点。可以看到,node1 和 node2 工作节点已加入至 master 中的集群。
8. 部署 CNI 网络插件
在上述操作完成后,各个工作节点已经加入了集群,但是它们的状态都是 NoReady,这是由于无它们无法跨主机通信的原因。而 CNI 网络插件的主要功能就是实现 pod 资源能够跨宿主机进行通信。在master
节点中执行以下命令进行配置:
<code style="margin-left:0">kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml</code>
然后使用命令 kubectl get pods -n kube-system
查看运行状态,1 代表运行中;
最后再次使用kubectl get nodes
查看集群中的工作节点;可以看到处于开机状态的 master 节点和 node2 节点已经是 ready 状态,处于关闭状态的 node1 节点为 NoReady 状态,测试无误。
Kubernetes 集群搭建完成。
四、方法总结
kubeadm 搭建 k8s 集群简单总结为以下几步:
- 准备虚拟机 3 台,分别安装 CentOS 操作系统,一台作为主控节点 master,两台作为工作节点 node;
- 对安装后的虚拟机进行初始化操作;
- 在所有的节点中安装 docker、kubeadm、kubelet、kubectl;
- 在 master 节点中使用
kubeadm init
命令部署集群; - 在 node 节点中使用
kubeadm join
命令将 node 节点添加至集群; - 部署网络插件 CNI。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181778.html原文链接:https://javaforall.cn
未经允许不得转载:木盒主机 » 【云原生 • Kubernetes】搭建 k8s 集群(Kubeadm 方式)[通俗易懂]