使用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

出现如下没有报错代表安装成功

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

查看集群节点信息

开启minikube的dashboard

minikube dashboard

通过浏览器访问

如果想外网访问使用如下方式

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

查看状态

查看tomcat的service的url

打开浏览器测试一下是否能访问

外网暴漏端口方法

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

下面附上一张美图

发表评论

后才能评论