mac使用虚拟机(VirtualBox+centos7)搭建kubernetes(K8S)集群

本文详细介绍了如何从零开始搭建Kubernetes集群,包括环境准备、Docker安装、Kubernetes核心组件配置,以及如何部署Master和Node节点。此外,还提供了KubeSphere的安装教程,涵盖Helm安装、OpenEBS存储配置及KubeSphere的最小化安装流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

文档地址

  • 官方文档:https://kubernetes.io/zh/docs/home/
  • k8s操作文档:https://kubernetes.io/zh/docs/reference/kubectl/overview/
  • kubectl操作命令文档:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

建议及其他说明

  1. 在关键点配置完成后将虚拟机做一下备份,方便出现异常时回退。
  2. 文中部分操作命令均来自官方,在文中有标记官方文档说明的地方,建议配合官方文档使用。

一、环境准备

1. 配置主机网络

主机网络地址设定为192.168.56.1,以后所有虚拟机IP均为192.168.56.***
后续在配置虚拟机时会使用两块网卡,一块用于外网(NAT)、一块用于内网(host-only)
以上主机网络地址就是用于内网使用
在这里插入图片描述
在这里插入图片描述

2. 配置磁盘空间

用于存储虚拟机文件。
点击左上角VirtualBox–>偏好设置–>默认虚拟电脑位置
Mac没有分区概念所以按照自己需求填写即可,Windows需要放在磁盘空闲大的盘符。
在这里插入图片描述

3. 安装虚拟机配置网络

安装虚拟机、配置网络步骤可以查看此博客
分别配置三台(可以配置一台,其他的直接复制即可,复制完修改静态IP地址),主机名在下一步有设置,可忽略

默认网卡地址(会自动生成)[ip addr可查看] 内网IP地址(可配置) 主机名(可配置)
10.0.2.15 192.168.56.100 k8s-node1
10.0.2.5 192.168.56.101 k8s-node2
10.0.2.4 192.168.56.102 k8s-node3

若三台主机默认网卡地址一样的问题解决:此博客文章末尾有说明

4.设置Linux环境(三台均需要设置)

  1. 禁掉防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 禁掉防火墙
  1. 禁用SELINUX (linux默认的安全策略)
vi /etc/selinux/config
# enforcing - SELinux security policy is enforced 默认是开启状态的
将SELINUX=enforcing改为SELINUX=disabled

# 禁用掉
# 也可以使用命令
# sed -i 's/enforcing/disabled/' /etc/selinux
# 设置当前会话禁用
setenforce 0

在这里插入图片描述

  1. 关闭swap(内存交换)
# swapoff -a # 临时
# 永久
 vi /etc/fstab
# 最后一行swap相关的注释即可

在这里插入图片描述

  1. 设置主机名
hostname # 可以查看主机名,主机名不能是localhost
# 重新设置主机名。按照上方提前约定好的分别起名为k8s-node1、k8s-node2、k8s-node3
hostnamectl set-hostname k8s-node1
  1. 修改host文件,配置主机名和网卡的关系,保证修改完后IP和主机名均可以正常ping通
默认网卡地址 内网IP地址(可配置) 主机名(可配置)
10.0.2.15 192.168.56.100 k8s-node1
10.0.2.5 192.168.56.101 k8s-node2
10.0.2.4 192.168.56.102 k8s-node3
vi /etc/hosts
# 将网卡和主机名对应关系保存到hosts文件中
10.0.2.15	k8s-node1
10.0.2.5	k8s-node2
10.0.2.4	 k8s-node3

在这里插入图片描述

  1. 将桥接的IPv4的流量传递到iptables的链,为了更精确的统计流量指标
# 编辑文件,将规则写入k8s.conf
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
EOF
# 使规则生效,执行后有对应规则输出,说明配置成功了
sysctl --system

二、安装docker kubeadm kubelet kubectl(三台均需要设置)

1.安装docker环境

kubernetes需要容器环境,采用docker。 安装配置网络步骤可以查看此博客

2.kubeadm kubelet kubectl

  • kubeadm快速安装Kubernetes集群的工具
    kubeadm init可以初始化master节点
    kubeadm join将从节点加入到集群中
  • kubelet 每一个node节点上的代理,帮node创建pod,管理网络等
  • kubectl 命令行程序,通过命令操作kubernetes集群

添加阿里云yum镜像

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=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装指定版本的(kubelet kubeadm kubectl),不指定版本安装最新

yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3

设置开启自启动

systemctl enable kubelet # 设置开机自启动
systemctl start kubelet # 启动
systemctl status kubelet # 查看状态

三、部署k8s-master(将 k8s-node1 作为master,所在以下操作在 k8s-node1上操作)

1.初始化master

  1. 执行kubeadm init命令需要下载很多镜像,提前将镜像下载

新建master_images.sh脚本,将下方脚本内容复制到里面,然后./master_images.sh执行即可
以下为脚本内容,循环下载docker镜像。

#!/bin/bash

images=(
	kube-apiserver:v1.17.3
    kube-proxy:v1.17.3
	kube-controller-manager:v1.17.3
	kube-scheduler:v1.17.3
	coredns:1.6.5
	etcd:3.4.3-0
    pause:3.1
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
#   docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName  k8s.gcr.io/$imageName
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值