Ubuntu安装Minikube ( Kubernetes青春版🤣)

------------ 前言 ------------
💻系统信息:Ubuntu 22.04
🔧Minikube:v1.18.1
🔧docker:20.10.12
📦需要安装的内容:kubectl,docker,minikube

Kubernetes简称k8s,下文统一简称k8s

Minikube和k8s区别

通俗的讲,如果k8s是pro版的手机,那minikube就是青春版
minikube是面向想体验和学习k8s的用户推出的简化版k8s

官方定义:
与 kind 类似,minikube 是一个工具, 能让你在本地运行 Kubernetes。 minikube 在你本地的个人计算机(包括 Windows、macOS 和 Linux PC)运行一个单节点的 Kubernetes 集群,以便你来尝试 Kubernetes 或者开展每天的开发工作。

两者的架构已不尽相同,完整的k8s集群部署需要master和node节点,其中master节点用于协调和管理其他节点,一般独立存在,实际的容器运行在node节点上,kubectl位于master节点。
而minikube则不同,master节点与其他节点合为一体,所有节点通过宿主机上的kubectl进行管理,相比k8s可以理解为单机版的k8s,部署更加简单。适合个人,测试环境和学习者使用。

k8s架构图

k8s架构图

minikube架构图

minikube架构图

安装

1.安装kubectl

1.1 apt 包更新, 安装 apt-transport-https\ca-certificates\curl

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

1.2 加认证公钥:

官方为Google的源,国内因为众所周知的原因,不推荐使用
这里使用阿里云的源 https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add

1.3 为apt安装添加阿里的镜像源

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

添加完成后切记执行

apt-get update

否则可能报错如下

root@mypc:/home/mypc# apt-get update
获取:1 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease [9,383 B]
错误:1 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease
  由于没有公钥,无法验证下列签名: NO_PUBKEY FEEA9169307EA071 NO_PUBKEY 8B57C5C2836F4BEB
命中:2 http://cn.archive.ubuntu.com/ubuntu jammy InRelease
命中:3 http://security.ubuntu.com/ubuntu jammy-security InRelease
命中:4 http://cn.archive.ubuntu.com/ubuntu jammy-updates InRelease
命中:5 http://cn.archive.ubuntu.com/ubuntu jammy-backports InRelease

2.安装minikube

apt-get update
apt-get install -y kubectl

耐心等待安装完成
-------------如果执行后报错如下-----------

No apt package “kubeadm“, but there is a snap with that name

说明apt的镜像源地址没有生效或是没配置,参照1.3的步骤执行下后,再次执行

apt-get update

后再安装!!!!!

-------------如果执行后报错如上-----------

校验minikube是否安装成功

minikube version

// 输出如下内容即为安装成功
// mypc@mypc:~$ minikube version
// minikube version: v1.18.1
// commit: xxxxx

3.启动minikube

启动minikube需要指定driver 命令是

minikube start --driver=docker

我这里选择的是docker,当然minikube支持多种容器化工具,docker用惯了就选了docker

⚠️如果你还没有安装docker,启动会报错,docker安装命令如下:

apt-get install docker.io

-------------如果启动时报错如下-----------

mypc@mypc:~$ minikube start --driver=docker
😄  Ubuntu 22.04 上的 minikube v1.18.1
✨  根据用户配置使用 docker 驱动程序

💣  Exiting due to PROVIDER_DOCKER_NEWGRP: "docker version --format -" exit status 1: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied
💡  建议:Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker'
📘  文档:https://docs.docker.com/engine/install/linux-postinstall/

是因为docker安装后默认需要root权限,即sudo docker xxx才能执行,但是minikube不推荐在root下使用,导致minikute用不了docker,需要给普通用户增加docker使用的权限

# 添加docker用户组,这个命令执行后可能会提示该用户组已存在,为正常现象
sudo groupadd docker
# 将当前登陆的用户加入到docker用户组中
sudo gpasswd -a $USER docker
# 更新用户组信息
newgrp docker
#普通用户权限下不加sudo执行docker命令,如果正常输出结果,则说明配置成功
docker ps

-------------如果启动时报错如上-----------
启动成功后输出如下内容:

mypc@mypc:~$ minikube start --driver=docker
😄  Ubuntu 22.04 上的 minikube v1.18.1
✨  根据用户配置使用 docker 驱动程序
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...

耐心等待启动完成,有时候镜像源服务器会抽风报错😂

如果启动时出现pull base image卡住问题,以下是解决方法

阿里镜像源会出现拉取镜像慢或者缺失问题,如果你跟我一样悲催,出现
save image to xxxxxx.... file unexpected EOF 错误
就老老实实按官方给的方法来吧

# 先执行
minikube delete
# 然后执行
rm -rf /home/[用户名]/.minikube

然后查阅官方文档:https://minikube.sigs.k8s.io/docs/start/

# 执行
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

该命令会安装最新版本的minikube,我这里装的是v1.28.0
然后执行

# 加上--image-mirror-country=cn是为了使用阿里的镜像源,之前出现无法下载镜
# 像的问题,我严重怀疑是minikube版本太低的原因
minikube start minikube start --image-mirror-country=cn --driver=docker

如果到这里执行完毕,你可以跳过下面红色的部分

----------------------------如果执行后报错----------------------------

Exiting due to K8S_KUBELET_NOT_RUNNING: wait: /bin/bash -c "sudo env PATH="/var/lib/minikube/binaries/v1.25.3:$PATH" kubeadm init --config /var/tmp/minikube/kubeadm.yaml  --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,DirAvailable--var-lib-minikube-etcd,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap,Mem,SystemVerification,FileContent--proc-sys-net-bridge-bridge-nf-call-iptables": Process exited with status 1

参考:https://github.com/kubernetes/minikube/issues/15270 中的解决方法

# 先执行
minikube delete
# 然后执行
rm -rf /home/[用户名]/.minikube

将--kubernetes-version 版本设置成1.23.0

新的启动命令如下

minikube start --image-mirror-country=cn --kubernetes-version=1.23.0

即可启动完成
----------------------------------------------------------------------

4.启动minikube控制台

4.1 如果你只在本机启动

# 该命令执行后会自动打开浏览器,如果想输出具体的地址 再命令后加 --url
minikube dashboard

4.1 如果你在服务器上启动,并通过其他电脑访问

# 执行如下命令,为服务提供代理
nohub kubectl proxy  --port=[需要暴露的端口号] --address='[服务器IP]' --accept-hosts='^[外部访问服务器的IP]$'  >/dev/null 2>&1& 

然后执行

minikube dashboard --url

访问地址

http://[服务器IP]:[需要暴露的端口号]/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/workloads?namespace=default

即可进入minikube的管理界面,如果进不去,记得排查防火墙是否放行了你想要暴露的端口号

sudo ufw allow [需要暴露的端口号]
# K8S 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×