使用minikube安装单节点的K8S(完整版)
minikube是一个构建kubernetes单节点的一个工具,对于测试和本地开发构建kubernetes特别好用。
关闭防火墙和selinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
配置网络转发模块
modprobe br_netfilter
cat<<EOF>> /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
因为我使用的是云服务器,不支持虚拟化,无法使用其他虚拟软件驱动,所以只能使用docker方式,安装docker环境,我这里就使用最新docker-ce了
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
配置docker加速源
[root@vgt06e3nlwz0envk ~]# sudo mkdir -p /etc/docker
[root@vgt06e3nlwz0envk ~]# sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://vbe25vg3.mirror.aliyuncs.com"]
}
EOF
安装minikube命令
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube默认使用root用户会报错,需要创建一个普通用户来运行,并赋予docker组中
useradd minikube
usermod -aG docker minikube
启动docker服务并设置开机启动
systemctl daemon-reload
systemctl start docker && systemctl enable docker
切换到普通用户并安装
su - minikube
minikube start --driver=docker
出现如下没有报错代表安装成功
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-11.png)
kubectl客户端安装(root用户下安装)
cat <<EOF >> /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install kubectl -y
切换到普通用户查看集群状态
su - minikube
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-12.png)
查看集群节点信息
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-13.png)
开启minikube的dashboard
minikube dashboard
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-14.png)
通过浏览器访问
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-15.png)
如果想外网访问使用如下方式
kubectl proxy --port=33458 --address='0.0.0.0' --accept-hosts='^.*' &
到这一步基本上我们的minikube就安装完成啦,下面来创建一个应用来测试一下我们的minikube的环境
首先下载一个tomcat镜像
wget https://pan.cnbugs.com/k8s/images/tomcat.tar.gz
docker load -i tomcat.tar.gz
创建一个tomcat应用
kubectl create deployment tomcat01 --image=tomcat:8.5-jre8-alpine
暴漏service的8080端口
kubectl expose deployment tomcat01 --type=NodePort --port=8080
查看状态
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-16.png)
查看tomcat的service的url
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-17.png)
打开浏览器测试一下是否能访问
![](https://www.cnbugs.com/wp-content/uploads/2021/12/image-18.png)
外网暴漏端口方法
iptables -t nat -A DOCKER -p tcp --dport 20009 -j DNAT --to-destination 192.168.49.2:30214
为什么要外网暴漏端口呢,因为我是使用docker驱动搭建的minikube,如果不暴漏只能使用宿主机访问,目前没有想到其他办法,还有待学习,希望看到的老铁有其他办法欢迎留言,我将不胜感激啊!
至此minikube才算正常使用安装完成!
当服务器重启之后使用下面方式启动minikube
minikube start
因为是使用的docker驱动,为了测试方便,可以在宿主机添加一条路由,否则每次在测试pod的时候都需要开启service的访问才行。
route add -net 172.17.0.0/24 gw 192.168.49.2
下面附上一张美图
![](https://www.cnbugs.com/wp-content/uploads/2021/12/photo_2021-11-17_10-59-42.jpg)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。