纯小白从0搭建k8s minikube版
minikube 是本地化的kubernetes,对于大部分没有多台服务器又想实际k8s的同学来说,minikube是比拟好入门的学习工具。
这篇文章也是从minikube动手,讲讲如何搭建k8s集群。
环境
一台服务器
- 2 个 CPU 或更多
- 2GB 可用内存
- 20GB 可用磁盘空间
- 网络连接
- 容器或虚拟机管理器,例如:Docker、Hyperkit、Hyper-V、KVM、Parallels、Podman、VirtualBox或VMware Fusion/Workstation
我自己是在linux服务器上操作,上面的实际也是针对linux零碎的。
装置
装置 minikube
在这里依据本人的服务器状况查问下应该装置哪个版本的minikube
https://minikube.sigs.k8s.io/...
我的服务器是Linux, x86-64 , 抉择装置稳固版本的 minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudo install minikube-linux-amd64 /usr/local/bin/minikube
注: linux 下能够用 uname -m
查问处理器架构(Architecture)
装置容器 Docker
k8s是为编排容器而搭建的集群,所以要求有容器。
这里我抉择了Docker做为集群容器
装置之前,查看下linux内核:官网倡议 3.10 以上
uname -r # 5.10.60-9.al8.x86_64
更新yum包
yum -y update
这一步不是必须的,能够略过,前面呈现不兼容的状况时就必须update了
注:
# 降级所有包同时也降级软件和零碎内核; yum -y update# 只降级所有包,不降级软件和零碎内核yum -y upgrade
装置须要的软件包, yum-util 提供yum-config-manager性能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置 yum 源
地方仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
阿里仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 查看docker版本并装置
查看可装置版本
yum list docker-ce --showduplicates | sort -r
装置
# yum install docker-ce-版本号yum install docker-ce-19.03.13
查看是否装置胜利
docker version
启动docker服务
<!-- 启动docker -->systemctl start docker<!-- 设置开机自启动 -->systemctl enable docker
minikube start
装置完miniKube 和 docker 后,执行 minikube start, 启动集群服务
问题:
当以 root 身份执行时,会有报错
❌ Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.
意思是,思考到安全性问题,不倡议以 root 身份启动,docker 文档上有阐明:
Docker allows you to share a directory between the Docker host and a guest container; and it allows you to do so without limiting the access rights of the container. This means that you can start a container where the /host directory is the / directory on your host; and the container can alter your host filesystem without any restriction.
当我在网上搜寻解决方案时,有个计划是强制应用root 身份执行
minikube start --force --driver=docker
尽管能够解决问题,但不举荐这个做法 ⚠️
解决方案:
创立新账号adduser newUserpasswd newUsersu newUser
再次
minikube start
, 报错:- 倡议:Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker'
文档:https://docs.docker.com/engin...
解决:
创立docker group, 增加 newUser 到docker group, 激活对组的更改su root# 创立docker groupsudo groupadd docker# 增加 newUser 到docker groupsudo usermod -aG docker newUser# 激活对组的更改newgrp docker
应用newUser来执行 minikube start --driver=docker
su newUser# `--driver=docker` 示意用docker作为容器,不指定的话默认dockerminikube start --driver=docker
FQA 可能遇到的问题
问题1:
Exiting due to PROVIDER_DOCKER_NOT_RUNNING: "docker version --format -" exit staus 1: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
- 起因:之前是用root账号启动的docker,
- 解决:先用root 敞开 docker 服务,在以 newUser 身份启动docker 即可
systemctl stop dockersu newUsersystemctl start dockerminikube start --driver=docker
问题2:
❌ Exiting due to GUEST_START: Failed kubeconfig update: writing kubeconfig: Error creating directory: /etc/kubernetes: mkdir /etc/kubernetes: permission denied
- 起因:$KUBECONFIG 变量被占用了
解决:重置$KUBECONFIG 变量
unset KUBECONFIG
胜利启动
[josefa@xxx ~]$ minikube start minikube v1.24.0 on Alibaba 3 (amd64)✨ Using the docker driver based on existing profile Starting control plane node minikube in cluster minikube Pulling base image ... Restarting existing docker container for "minikube" ...❗ This container is having trouble accessing https://k8s.gcr.io To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/ Preparing Kubernetes v1.22.3 on Docker 20.10.8 ... Verifying Kubernetes components... ▪ Using image kubernetesui/dashboard:v2.3.1 ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5 ▪ Using image kubernetesui/metrics-scraper:v1.0.7 Enabled addons: storage-provisioner, default-storageclass, dashboard Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
装置kubectl
kubectl 是治理k8s集群的命令行管理工具,在minikube 中,同样也应用 kubectl 来进行治理。
下一步就是装置kubectl,可参考 https://kubernetes.io/zh/docs...
下载
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
验证该可执行文件(可选步骤)
# 下载 kubectl 校验和文件:curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"# 基于校验和文件,验证 kubectl 的可执行文件echo "$(<kubectl.sha256) kubectl" | sha256sum --check
验证通过时,输入为:
kubectl: OK
装置
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl# 查看kubectl version --client# 查看集群信息kubectl get po -A# 或者minikube kubectl -- get po -A
minikube dashboard
minikube dashboard 是minikube的仪表盘,方便管理
启动
[josefa@xxx ~]$ minikube dashboard樂 Verifying dashboard health ... Launching proxy ...樂 Verifying proxy health ... Opening http://127.0.0.1:34179/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser... http://127.0.0.1:34179/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
此时曾经启动了 dashboard, 但无奈通过浏览器拜访
实现近程拜访
kubectr proxy 能够帮咱们实现近程拜访dashboard服务kubectl proxy --port=8002 --address='1xx.0.xxx' --accept-hosts='^.*'
1xx.0.xxx
是宿主机内网地址, 如此便能够通过 http://127.0.0.1:34179/api/v1... , 将127.0.0.1 替换为宿主机外网地址即可拜访。
到此为止,咱们曾经胜利启动了minikube服务,并且能够通过dashboard察看到服务状况
未完待续..