vagrant + vitrulbox + centos8 部署单机 k8s
安装环境vagrant+vbox+centos8安装顺序说明链接1下载安装windows版vagrant官网下载csdn下载2下载安装virtualbox官网下载清华下载step1 初始化centos8按照centos官网安装方式文档链接运行cmd命令行 执行vagrant init centos/8 --box-version 1905.1设置vagrant由centos8为基础然后vagran
安装环境vagrant+vbox+centos8
安装顺序 | 说明 | 链接 |
---|---|---|
1 | 下载安装windows版vagrant | 官网下载 |
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
修改文件夹0
为1905.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 6 orreboot orsource /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+z
后jobs
查看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=default
ip为vagrantfile中指定的ip,也可以在host中定义别名
更多推荐
所有评论(0)