目录

前言

一、环境准备

1、准备虚拟机

2. 编写vagrantfile

3、启动及配置虚拟机

二、部署kubesphere

1. 节点分配(单主节点)

 2.安装必要的工具(三台虚拟机都执行)

3.创建集群








前言

KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。

本文多服务器环境为虚拟机,安装过程根据官方文档整理。







一、环境准备

1、准备虚拟机

  • virtualBox和vagrant下载地址见另一篇文章。

还在用VMware Workstation搭建linux虚拟机?不用那么麻烦VirtualBox+vagrant教你简单搞定虚拟机_cv+攻城狮的博客-CSDN博客https://blog.csdn.net/qq_31277409/article/details/113917351?spm=1001.2014.3001.5501

  •   安装完设置虚拟机ip地址段,全部为56.x的ip地址。

  •  选择 管理-全局设定 选一个空间较大的硬盘用来存放镜像,我这里选择了E盘下的某个文件夹

2. 编写vagrantfile

vagrantfile用来创建虚拟机。有了这个配置文件就不需要手动创建虚拟机了,vagrant会根据此文件自动创建虚拟机。下面使用它来创建三个虚拟机,分别为k8s-node1,k8s-node2和k8s-node3.

Vagrant.configure("2") do |config|
	# 遍历
   (1..3).each do |i|
        config.vm.define "k8s-node#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "centos/7"

            # 设置虚拟机的主机名
            node.vm.hostname="k8s-node#{i}"

            # 设置虚拟机的IP  102 103 104
            node.vm.network "private_network", ip: "192.168.56.#{101+i}", netmask: "255.255.255.0"

            # 设置主机与虚拟机的共享目录
            # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"

            # VirtaulBox相关配置
            node.vm.provider "virtualbox" do |v|
                # 设置虚拟机的名称
                v.name = "k8s-node#{i}"
                # 设置虚拟机的内存大小
                v.memory = 4096
                # 设置虚拟机的CPU个数
                v.cpus = 4
            end
        end
   end
end

注意:此文件要放到英文无空格目录下

3、启动及配置虚拟机

  • 在vagrantfile所在的文件夹下运行cmd并输入vagrant up回车,虚拟机开始自动部署。

  •  等待虚拟机部署完毕即可。

  •  进入到虚拟机开启root密码访问,此操作是为了后面我们方便通过Xshell等客户端工具进行连接。

  在刚才的CMD窗口输入  vagrant ssh xxx  xxx代表主机名称 如下:


vagrant ssh k8s-node1 

  连接之后切换为root用户 密码:vagrant

su root 

修改 sshd_config文件

vi /etc/ssh/sshd_config

修改
PasswordAuthentication yes

 重启sshd

service sshd restart

 三台虚拟机都要执行上诉操作

  •  配置网络

停掉所以虚拟机,选中三个节点,然后选择 管理-全局设定-网络 添加NAT网络

 然后分别修改每台虚拟机的网络类型为 NAT网络 。并重新生成MAC地址。

 注意:第四步一定要点击刷新按钮重新生成一下MAC地址

检查三个虚拟机的IP地址,查看eth0的IP地址,三个虚拟机eth0的ip地址不一样即可。

//k8s-node1
[root@k8s-node1 vagrant]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:bd:06:c8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 358sec preferred_lft 358sec
    inet6 fe80::a00:27ff:febd:6c8/64 scope link 

//k8s-node2
[root@k8s-node2 ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:66:07:0d brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.4/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 435sec preferred_lft 435sec
    inet6 fe80::a00:27ff:fe66:70d/64 scope link 
       valid_lft forever preferred_lft forever
//k8s-node3
[root@k8s-node3 ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:8e:d6:e6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.5/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 445sec preferred_lft 445sec
    inet6 fe80::a00:27ff:fe8e:d6e6/64 scope link 
       valid_lft forever preferred_lft forever


  •  设置linux环境(三个虚拟机都需要执行)

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

 关闭seLinux


sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
 

关闭swap

 swapoff -a #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
free -g #验证,swap必须为0

  • 添加host记录
vi /etc/hosts
10.0.2.15 k8s-node1
10.0.2.4 k8s-node2
10.0.2.5 k8s-node3

注意:IP地址一定要是自己的eth0的地址。 

 将桥接的IPV4流量传递到iptables的链:

cat > /etc/sysctl.d/k8s.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

 应用生效

sysctl --system

 提示:以上操作完可以对虚拟机镜像进行备份,防止以后出问题还得重新配置。






二、部署kubesphere






1. 节点分配(单主节点)

node iphostnamerole
10.0.2.15k8s-node1master,etcd

10.0.2.4

k8s-node2node

10.0.2.5

k8s-node3node

role为master的节点为主节点,不部署具体业务,只进行管理

role为node的节点为工作节点,具体业务会部署到该节点上

官方图:

 2.安装必要的工具(三台虚拟机都执行)

  • 输入curl来检查curl是否安装,如果没有就安装curl 

返回上述内容即已安装curl,否则输入

yum install -y curl
  •  安装socat
yum install -y socat
  •  安装 conntrack
yum install -y conntrack

 切换到root用户

查看本地时间,发现时区为UTC

timedatectl

 

  •  切换时区为上海
timedatectl set-timezone Asia/Shanghai

 再次查看时区,变为CST

  •  安装时间同步工具
yum install -y chrony

 查看时间同步列表

chronyc -n sources -v

 暂时不去修改,用其默认的时间同步列表。

 查看本机时间同步状态

chronyc tracking

 

 核查本地时间,确定三天虚拟机时间一致

timedatectl status
  •  下载kubesphere安装工具(主节点执行)
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.1 sh -

 备注:执行以上命令会下载最新版 KubeKey (v1.1.1),您可以修改命令中的版本号下载指定版本。

注意:如果下载不下来,请先执行 export KKZONE=cn 然在执行上面命令

  • 为 kk 添加可执行权限:
chmod +x kk

3.创建集群(主节点执行)

  •  创建配置文件
./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]

示例:./kk create config --with-kubernetes v1.18.6 --with-kubesphere v3.1.1 

  • 安装 KubeSphere v3.1.1 的建议 Kubernetes 版本:v1.17.9,v1.18.8,v1.19.8 以及 v1.20.4。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.19.8。有关受支持的 Kubernetes 版本的更多信息,请参见支持矩阵

  • 如果您在此步骤的命令中不添加标志 --with-kubesphere,则不会部署 KubeSphere,只能使用配置文件中的 addons 字段安装,或者在您后续使用 ./kk create cluster 命令时再次添加这个标志。

  • 如果您添加标志 --with-kubesphere 时不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。

 完成后会看到生成了一个配置模板

  •  根据自己机器的实际情况配置相关节点的内容

  •  通过一条命令安装kubesphere
./kk create cluster -f config-sample.yaml

备注:如果使用其他名称,则需要将上面的 config-sample.yaml 更改为您自己的文件。 

 整个安装过程可能需要 10 到 20 分钟,具体取决于您的计算机和网络环境。

  • 完成安装
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.0.2:30880
Account: admin
Password: P@88w0rd

NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     the "Cluster Management". If any service is not
     ready, please wait patiently until all components
     are up and running.
  2. Please change the default password after login.

#####################################################
https://kubesphere.io             20xx-xx-xx xx:xx:xx
#####################################################
  •  查看各组件是否都安装成功,所有的状态都是running或Completed.
kubectl get pod --all-namespaces

 

 现在,您可以通过 <NodeIP:30880 使用默认帐户和密码 (admin/P@88w0rd) 访问 KubeSphere 的 Web 控制台。

备注:若要访问控制台,您可能需要根据您的环境配置端口转发规则。还请确保在您的安全组中打开了端口 30880

登录


Logo

开源、云原生的融合云平台

更多推荐