vagrant + vitrulbox + centos8 部署单机 k8s

安装环境vagrant+vbox+centos8

安装顺序 说明 链接
1 下载安装windows版vagrant 官网下载
csdn下载 2.2.13有加载插件挂钩的问题不建议安装问题锚点
2 下载安装virtualbox 官网下载
清华下载

step1 初始化centos8

按照centos官网安装方式文档链接

运行cmd命令行 执行vagrant init centos/8 --box-version 1905.1设置vagrant由centos8为基础

然后vagrant up启动centos8

如果嫌弃vagrant下载慢可以手动迅雷或者其他方式下载https://vagrantcloud.com/centos/boxes/8/versions/1905.1/providers/virtualbox.box实际上重定向到http://cloud.centos.org/centos/8/vagrant/x86_64/images/CentOS-8-Vagrant-8.0.1905-1.x86_64.vagrant-virtualbox.box

然后使用命令添加到vbox库vagrant box add centos/8 CentOS-8-Vagrant-8.0.1905-1.x86_64.vagrant-virtualbox.box

然后进入vagrant本地镜像目录修改版本~\.vagrant.d\boxes\centos-VAGRANTSLASH-8~代表当前用户文件夹,windows下我的是 C:\Users\Administrator修改文件夹01905.1(之前init的版本,如果你是其他更新版本了,灵活使用,如果不记得了可以去你执行init命令的目录里的Vagrantfile文件里看看,init命令主要是生成这个文件)

并在当前目录中echo "https://vagrantcloud.com/centos/boxes/8/" > metadata_url等价于在~\.vagrant.d\boxes\centos-VAGRANTSLASH-8中新建metadata_url写入https://vagrantcloud.com/centos/boxes/8/,这一步是模拟vagant加载公共映像,不能漏

  • [可选] 设置gem(对运行Ruby有用对vagrant无用,vagrant是写死使用 https://rubygems.org/ 的需要手动修改)官方文档
set SSL_CERT_FILE=C:\xxx\cacert.pem#设置ssh认证文件
C:\HashiCorp\Vagrant\embedded\mingw64\bin\bundle config mirror.https://rubygems.org https://gems.ruby-china.com#设置bundle镜像
C:\HashiCorp\Vagrant\embedded\mingw64\bin\gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/#设置gem源

编辑"C:\HashiCorp\Vagrant\embedded\gems\2.2.13\gems\vagrant-2.2.13\lib\vagrant\bundler.rb"文件将gem仓库https://rubygems.org/换成https://gems.ruby-china.com国内库
vagrant plugin install vagrant-disksize安装disksize插件

  • 修改vagrantFile两个cpu,953mb以上内存(k8s最低配置),以下是我的配置vagrant-disksize插件地址
Vagrant.configure("2") do |config|
  config.vm.box = "centos/8"
  config.vm.box_version = "1905.1"
  config.vagrant.plugins = ['vagrant-disksize']
  config.disksize.size="50G"#自行决定,后续扩容比较麻烦
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"#内存
    vb.cpus = 2#cpu
  end
  config.vm.provision "shell", inline: <<-SHELL
  #   echo 初始化的命令
    sudo rm -rf /etc/yum.repos.d/* #清空官方源
    sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo #使用阿里源
  	sudo dnf install -y cloud-utils-growpart #安装软件 适用于centos8
    sudo growpart /dev/sda 1 #自动扩展磁盘空间
    sudo xfs_growfs / #自动使用剩余空间
  SHELL
end

vagrant validate校验一下vagrantFile是否正确
然后vagrant up启动centos8

vagrant(流浪汉)简介,快速搭建虚拟机,快速重置实验环境
主要命令 官方文档
vagrant init在当前目录初始化Vagrantfile
vagrant up 启动虚拟机
vagrant ssh进入虚拟机
vagrant halt关闭虚拟机
vagrant destroy销毁虚拟机
vagrant reload --provision重新加载配置–provision代表执行vagrantfile中的命令
需要注意的是不要使用rm -rf /或者删除虚拟机中/vagrant目录,因为这个目录是你执行vagrant命令的虚拟机和本地系统共享目录,即Vagrantfile文件存在的目录,在虚拟机中删除则在本地系统一样删除,特别是如果你在你的用户文件夹初始化然后ssh进虚拟机删除,那么你桌面等文件会被删除

2020/11/18追加

发现当前官方最新版vagrant2.2.13有bug导致无法加载插件挂钩,导致disksize无法运行,可以安装修复版本2.2.14.dev.2B157db399,csdn下载或者等待官方更新正式发布版
然后vagrant halt;vagrant up --provision刷新磁盘空间即可,也可以手动执行Vagrantfile中的shell,实测vagrant reload无法触发插件,具体没去细究。

其他

vagrant 的ruby环境可以复用
将以下环境加载脚本保存为loadrbenv.cmd(如果embedded_home位置不对需要人工矫正),打开cmd运行加载脚本即可在windows使用ruby(这可暂时比ruby官方的好用)

@ECHO OFF
SET embedded_home=C:\HashiCorp\Vagrant\embedded
set SSL_CERT_FILE=%embedded_home%\cacert.pem
SET path=%path%;%embedded_home%\bin;%embedded_home%\usr\bin;%embedded_home%\mingw64\bin\

step 1.1切换中文系统(不推荐,仅是应对中文乱码)

命令 用意
dnf search langpacks|grep zh 查找centos8中文语言包
dnf install langpacks-zh_CN 安装简体中文
locale -a|grep zh 查看本地字符集是否识别了中文,如果没有打印,dnf upgrade glibc-common更新locale版本再重试
sed -i 's/LANG=.*/LANG="zh_CN.UTF-8"/g' /etc/locale.conf 修改系统字符集为中文UTF8字符集
init 6orrebootorsource /etc/locale.conf 前两个都为重启,第三个不重启刷新当前bash语言配置

step 2 安装k8s

官方文档,实验环境就不搞花里胡哨的集群,直接单机部署

  • 省事切换root
    sudo su
  • 安装kubectl阿里源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
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
yum install -y kubectl
  • 安装minikube
    dnf -y install https://mirrors.tuna.tsinghua.edu.cn/github-release/kubernetes/minikube/LatestRelease/minikube-1.16.0-0.x86_64.rpm

因为清华只拉取最新版如果404则自行去https://mirrors.tuna.tsinghua.edu.cn/github-release/kubernetes/minikube/LatestRelease/寻找最新版本
也可以使用aliyun的minikubecurl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.14.2/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ && ln -s /usr/local/bin/minikube /usr/bin/minikube
minikubestart尝试运行可能会报以下错误

[root@localhost vagrant]# minikube start --image-mirror-country cn --iso-url=https://mirrors.tuna.tsinghua.edu.cn/github-release/kubernetes/minikube/LatestRelease/minikube-v1.16.0.iso
  Centos 8.2.2004 上的 minikube v1.15.0
  Unable to pick a default driver. Here is what was considered, in preference order:
    ▪ virtualbox: Not installed: unable to find VBoxManage in $PATH
    ▪ vmware: Not installed: exec: "docker-machine-driver-vmware": executable file not found in $PATH
    ▪ docker: Not installed: exec: "docker": executable file not found in $PATH
    ▪ kvm2: Not installed: exec: "virsh": executable file not found in $PATH
    ▪ none: Not installed: exec: "docker": executable file not found in $PATH
    ▪ podman: Not installed: exec: "podman": executable file not found in $PATH

❌  Exiting due to DRV_NOT_DETECTED: No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/

官方文档说任选其一,我第一次想尝试podman官方文档结果因为podman版本过低又久久无法更新(主要是等官方镜像太慢了,然后被舍友拉去打游戏,后面想想dnf 直接安装阿里openSUSE的镜像低版本podman也行),但综合衡量还是使用更成熟的docker,直接vagrant destroy&vagrant up重来

  • 安装docker
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf -y install http://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm
dnf -y install libseccomp #实测containerd需要
dnf -y install docker-ce
systemctl enable docker #开机自启动
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config #默认关闭selinux
setenforce 0 #当前关闭selinux
systemctl start docker
  • [可选]修改docker加速
cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://ustc-edu-cn.mirror.aliyuncs.com/",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF
systemctl daemon-reload
systemctl restart docker
#docker info

或者申请阿里私有仓库

  • 安装conntrack
    yum install -y conntrack
  • 启动 minikube阿里介绍
    检查是否是root,minikube如果选择docker为驱动不能使用root用户启动需要exit到普通用户
    sudo usermod -aG docker $USER#将当前用户添加到docker组,需要exit重新登录bash来刷新权限
    minikube start启动,会默认选择docker来驱动,也可以加--driver=docker手动指定,大概会花个5、6分钟

minikube start主要是使用宿主机docker启动minikube容器(镜像为google_containers/kicbase),容器中的docker中运行k8s组件(嵌套docker,docker container中运行docker),minikube start可以使用--registry-mirror=https://xxxxxx.mirror.aliyuncs.com指定minikube容器内docker的镜像加速地址,要查看minikube内docker信息需要先minikube ssh进入容器实例,然后docker info查看镜像地址,可以去阿里弄一下镜像加速地址链接,如果pod pull拉取镜像失败可以进入minikube容器使用docker拉取

minikube dashboard打开控制台
setcap cap_net_bind_service=+eip /usr/bin/kubectl给kubectl赋予非root用户执行时监听低端口的能力,极限为65535(unsigned int16)
kubectl proxy --port=80 --address='0.0.0.0' --accept-hosts='^.*'转发局域网内访问

在后面加&可以后台运行,或者Ctrl+zjobs查看id,bg %id转为后台任务,kill %id结束后台任务,仅当前登录进程存活有效
也可以
nohup minikube dashboard 1>>dashboard.log 2>>dashboard.err &后台进程运行nohup退出当前终端进程依然运行
nohup kubectl proxy --port=80 --address='0.0.0.0' --accept-hosts='^.*' > /dev/null 2>&1 &
终止就需要ps -aux|grep dashboard查到pid进行查杀

访问http://192.168.33.10/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=defaultip为vagrantfile中指定的ip,也可以在host中定义别名
vagrant + vitrulbox + centos8 部署单机 k8s_第1张图片

你可能感兴趣的:(#,速记)