文章目录
Kubernetes 集群
- 在所有节点上安装Docker和kubeadm
- 部署Kubernetes Master
- 部署容器网络插件
- 部署 Kubernetes Node,将节点加入Kubernetes集群中
- 部署 Dashboard Web 页面,可视化查看Kubernetes资源
- 部署 Harbor 私有仓库,存放镜像资源
Kubernetes 集群环境准备
节点配置概览
节点名称 | 配置(CPU/内存) | IP地址 | 安装软件 |
---|---|---|---|
master | 2C/4G(CPU核心数要求大于2) | 20.0.0.10 | docker、kubeadm、kubelet、kubectl、flannel |
node01 | 2C/2G | 20.0.0.58 | docker、kubeadm、kubelet、kubectl、flannel |
node02 | 2C/2G | 20.0.0.59 | docker、kubeadm、kubelet、kubectl、flannel |
Harbor节点 | - | 20.0.0.57 | docker、docker-compose、harbor-offline-v1.2.2 |
环境准备
- 关闭防火墙、SELinux 和 Swap
- 在所有节点上执行以下命令:
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/enforcing/disabled/' /etc/selinux/config iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab
- 在所有节点上执行以下命令:
- 加载 ip_vs 模块
- 在所有节点上执行以下命令:
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
- 在所有节点上执行以下命令:
- 修改主机名
- 在 Master 节点上执行:
hostnamectl set-hostname master01
- 在 Node01 节点上执行:
hostnamectl set-hostname node01
- 在 Node02 节点上执行:
hostnamectl set-hostname node02
- 在 Master 节点上执行:
- 修改 hosts 文件
- 在所有节点上编辑
/etc/hosts
文件,添加以下内容:20.0.0.10 master01 20.0.0.58 node01 20.0.0.59 node02
- 在所有节点上编辑
- 调整内核参数
- 在所有节点上创建
/etc/sysctl.d/kubernetes.conf
文件,并添加以下内容:# 开启网桥模式,可将网桥的流量传递给iptables链 net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 # 关闭ipv6协议 net.ipv6.conf.all.disable_ipv6=1 net.ipv4.ip_forward=1
- 应用内核参数:
sysctl --system
- 在所有节点上创建
注意
- 关闭 Swap:Kubernetes 要求必须关闭 Swap 分区,否则会导致集群初始化失败。
- 加载 ip_vs 模块:这是为了支持 Kubernetes 的 Service 负载均衡功能。
- 调整内核参数:这些参数对于 Kubernetes 集群的网络和性能至关重要。
Kubernetes 集群环境搭建
所有节点安装 Docker
- 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加 Docker 仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker
yum install -y docker-ce docker-ce-cli containerd.io
- 配置 Docker
创建/etc/docker/daemon.json
文件,并添加以下内容:{ "registry-mirrors": ["https://docker.m.daocloud.io", "https://docker.1panel.live"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "500m", "max-file": "3" } }
- 重载 Systemd 配置并重启 Docker
systemctl daemon-reload systemctl restart docker.service systemctl enable docker.service
- 验证 Cgroup Driver
期望输出:docker info | grep "Cgroup Driver"
Cgroup Driver: systemd
所有节点安装 kubeadm、kubelet 和 kubectl
-
定义 Kubernetes 源
创建/etc/yum.repos.d/kubernetes.repo
文件,并添加以下内容:[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
-
安装 kubeadm、kubelet 和 kubectl
yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15