前言
大家好,我是秋意零。
前面一篇中,我们介绍了 kubeadm 的工作流程。那么今天我们就实际操作一下,探索如何快速、高效地从 0 开始搭建一个完整的 Kubernetes 集群,让你轻松驾驭容器化技术的力量!!
👿 简介
正文开始:
- 快速上船,马上开始掌舵了(Kubernetes),距离开船还有 3s,2s,1s…
如果不太关注如何手动部署 Kubernetes 集群的朋友,可以跳过或者使用 MiniKube 、Kind、国内版的 MiniKube本地启动简单的 Kubernetes 集群进行后面的学习即可。这里简单介绍一下 MiniKube 启动集群( MiniKube 官方文档),详解介绍 kubeadm 启动集群。
上一篇中留下一个问题,大家都清楚了吗?
kubeadm 方式部署集群,不能应用在生产环境当中,原因是没有生产级别可用的:类似于高可用、授权、多租户、灾难备份等功能,所以只要支持高可用等生产级别就行,我们探讨的 kubeadm 部署集群方式,不支持。
大家可以去了解一下 kubeadm 创建高可用性集群,后续也会讲到,期待一下吧。
一、MiniKube 启动集群
MiniKube 官方文档:https://minikube.sigs.k8s.io/docs/start/
1.安装 Docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3 sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # Step 4: 更新并安装Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start systemctl enable docker
2.启动集群
minikube start --force minikube kubectl -- get po -A alias kubectl="minikube kubectl --" kubectl get po -A
查看组件(Pod)是否运行:
二、kubeadm 部署准备工作
本地我们一般是使用 VMware Workstation 虚拟机软件。安装虚拟机点这里。
- Linux 主机,3.10 及以上的内核版本(如:CentOS 7)
- 至少 2 GB RAM(内存)
- 至少 2 个 CPU 核心
- 集群所有机器的网络相互连接
- 节点之中不可以有重复的主机名、MAC 地址或 product_uuid
- 禁用 swap 交换分区。为了保证 kubelet 正常工作,必须禁用交换分区。(永久关闭)
更多详细信息
1.我准备的机器配置如下:
- 4 GB RAM
- 2 个 CPU 核心
- 100 GB磁盘(至少保证 20 GB)
- 内网互通、外网单通(NAT)
2.实践的目标:
我们部署的 Kubernetes 版本是 v1.23.1 基于 Docker,如果想使用 containerd 点这里:kubernetes-v1.25.3 基于containerd 容器运行时。
- 基础环境配置,如:关闭防火墙、selinux、swap 等;
- 安装 Docker ;
- 安装 kubeadm、kubelet、kubectl ;
- kubeadm 初始化 Kubernetes 集群(Master、Node 节点);
- 部署 flannel 网络插件;
- 部署 Dashboard 可视化插件。
四、基础环境配置
注意:Master 和 Node 节点都操作。
# 修改主机名 hostnamectl set-hostname master hostnamectl set-hostname worker # 主机映射 cat >> /etc/hosts << EOF 192.168.200.15 master 192.168.200.16 worker EOF # 关闭 firewalld systemctl stop firewalld systemctl disable firewalld #临时关闭 selinux setenforce 0 #永久关闭 selinux sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config # 关闭swap分区 swapoff -a sed -i 's/.*swap.*/#&/' /etc/fstab #配置 yum rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #时间同步 yum install ntpdate -y ntpdate ntp1.aliyun.com
转发 IPv4 并让 iptables 看到桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter # 设置所需的 sysctl 参数,参数在重新启动后保持不变 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF # 应用 sysctl 参数而不重新启动 sudo sysctl --system #确认 br_netfilter 和 overlay 模块被加载 lsmod | grep br_netfilter lsmod | grep overlay #系统变量在sysctl 配置中被设置为 1 sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
五、安装 Docker
注意:Master 和 Node 节点都操作。
# step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3 sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # Step 4: 更新并安装Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start systemctl enable docker #配置 docker 加速地址和 Cgroup cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://uwtwp6l0.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"] } EOF systemctl restart docker