前言

需要在电脑上安装好VirtualBox和Vagrant

构建3台虚拟机

1、编写Vagrantfile文件

内容如下:

Vagrant.configure("2") do |config|
  config.vm.box_check_update = false
  config.vm.provider 'virtualbox' do |vb|
  vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
  end  
  $num_instances = 3
  # curl https://discovery.etcd.io/new?size=3
  (1..$num_instances).each do |i|
    config.vm.define "node#{i}" do |node|
      node.vm.box = "centos/7"
      node.vm.hostname = "node#{i}"
      ip = "172.17.8.#{i+100}"
      node.vm.network "private_network", ip: ip
      node.vm.provider "virtualbox" do |vb|
        vb.memory = "8192"
        if i==1 then
            vb.cpus = 2
        else
            vb.cpus = 1
        end
        vb.name = "node#{i}"
      end
    end
  end
end

2、启动3台虚拟机

在Vagrantfile文件所在目录的控制台下执行命令:

vagrant up

等待完成,完成后,在VirtualBox主页:

虚拟机配置用户名密码ssh连接

3台虚拟机都需要安装

配置参考:windows下VirtualBox和vagrant组合安装centos 中的“用户名密码ssh”

虚拟机docker安装

3台虚拟机都需要安装

安装教程:docker安装教程

安装 Kubernetes 命令行工具 kubectl

3台虚拟机都需要安装

执行命令:

yum install wget
wget https://dl.k8s.io/release/v1.24.0/bin/linux/amd64/kubectl && chmod +x kubectl && cp kubectl /usr/bin/

如果报错:curl: (1) Protocol “https not supported or disabled in libcurl

安装RKE命令行工具

只有主节点做即可

wget https://rancher-mirror.rancher.cn/rke/v1.3.10/rke_linux-amd64 && mv rke_linux-amd64 rke && chmod +x rke && ./rke --version && cp rke /usr/bin/

进行机器配置

adduser rke -G docker

1、禁用 SELinux

vi /etc/selinux/config

将第七行SELINUX=enforcing改为SELINUX=disabled

2、禁用 swap

vi /etc/fstab

使用 # 注释掉有 swap 的一行

3、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

4、重启查看效果

reboot
/usr/sbin/sestatus -v
free -h

5、设置用户

CentOS7不能使用root用户安装

添加用户:

adduser rke -G docker

给新添加的用户设置密码:

passwd rke

中途需要输入2次密码

确认新用户是否有权限:

su rke
docker ps -a

6、设置SSH

这个地方要给全部的机器配置ssh(包括自己)注意在新用户下操作:

ssh-keygen
ssh-copy-id rke@172.17.8.101
ssh-copy-id rke@172.17.8.102
ssh-copy-id rke@172.17.8.103

第一个红框位置输入yes,第二个红框位置输入密码

编辑rke.yaml

仅在主节点,在新用户下操作

vi rke.yaml

rke.yaml内容(里面的IP换成各自的IP哦):

nodes:
  - address: 172.17.8.101
    user: rke
    role: [controlplane, worker, etcd]
  - address: 172.17.8.102
    user: rke
    role: [controlplane, worker, etcd]
  - address: 172.17.8.103
    user: rke
    role: [worker]

services:
  etcd:
    snapshot: true
    creation: 6h
    retention: 24h

# 当使用外部 TLS 终止,并且使用 ingress-nginx v0.22或以上版本时,必须。
ingress:
  provider: nginx
  options:
    use-forwarded-headers: “true”
ded-headers: “true”

安装集群

也是在新用户下操作:

rke up --config rke.yaml

这步执行时间较长,多等一会,需要下载很多镜像~~~~

运行完成后执行 :

mkdir ~/.kube && mv kube_config_rke.yaml ~/.kube/config

最后,执行下面的命令确认集群安装完成

kubectl get node

安装kubernetes Dashboard

依然是在新用户下:

切换到~目录下

1、获取dashboard的yaml文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

2、修改文件

修改service部分,默认service是ClusterIP类型,这里改称NodePort类型,是集群外部能否访问

下面标红框的地方为新增加的:

3、执行yaml文件

kubectl apply -f recommended.yaml

4、查看服务状态

kubectl get all -n kubernetes-dashboard

下面红框的可以看出服务已经运行了

5、接下来浏览器访问

IP:30010,端口就是你在第二步中添加的,输入网址后,点击高级继续访问就出现下面的页面了

6、创建登录用户信息

创建文件admin-role.yaml,内容如下:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile

将其执行到集群中:

kubectl apply -f admin-role.yaml

7、获取token

查看kubernetes-dashboard下面的secret

在执行下面的命令:

kubectl -n kube-system describe secret 红框的名字

红框内就是token