Minikube极速搭建单机k8s集群全过程
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">第一步:安装前置依赖</a></li><li><a href="#_label1">第二步:安装 kubectl</a></li><li><a href="#_label2">第三步:安装 Minikube</a></li><li><a href="#_label3">第四步:启动 Minikube 集群d</a></li><li><a href="#_label4">第五步:体验一下 (可选)</a></li><li><a href="#_label5">常用管理命令</a></li><li><a href="#_label6">总结</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>第一步:安装前置依赖</h2><p>Minikube 需要一个容器或虚拟机管理器来运行集群。最推荐的是 <strong>Docker</strong>,因为它最简单高效。</p>
<ol><li><strong>更新软件包列表</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo apt-get update
</pre></div>
<ol start="2"><li><strong>安装必要的包</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo apt-get install -y ca-certificates curl gnupg lsb-release
</pre></div>
<ol start="3"><li><strong>添加 Docker 官方 GPG 密钥</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
</pre></div>
<ol start="4"><li><strong>设置 Docker 仓库</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">echo \
"deb https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
</pre></div>
<ol start="5"><li><strong>安装 Docker Engine</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
</pre></div>
<ol start="6"><li><strong>将当前用户添加到 <strong><code>docker</code></strong> 组</strong> (这样不用每次都 <code>sudo</code> 运行 docker)</li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo usermod -aG docker $USER
</pre></div>
<p><strong>重要</strong>:执行完这一步后,<strong>一定要重新登录或者重启终端</strong>,用户组权限才会生效。</p>
<p class="maodian"><a name="_label1"></a></p><h2>第二步:安装 kubectl</h2>
<p><code>kubectl</code> 是用来和 Kubernetes 集群交互的命令行工具。</p>
<ol><li><strong>下载最新稳定版的 kubectl</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
</pre></div>
<ol start="2"><li><strong>安装 kubectl</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
</pre></div>
<ol start="3"><li><strong>验证安装</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">kubectl version --client
</pre></div>
<p>看到版本信息就说明装好了。</p>
<p class="maodian"><a name="_label2"></a></p><h2>第三步:安装 Minikube</h2>
<ol><li><strong>下载 Minikube 二进制文件</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
# 或者
wget https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl
</pre></div>
<ol start="2"><li><strong>安装并使其可执行</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
</pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>第四步:启动 Minikube 集群d</h2>
<p>万事俱备,现在可以启动你的单机 K8s 集群了!</p>
<ol><li><strong>启动命令</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.48
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.48 gcr.io/k8s-minikube/kicbase:v0.0.48
sudo minikube start --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --force
</pre></div>
<div class="jb51code"><pre class="brush:bash;">- `--driver=docker` 是告诉 Minikube 使用我们之前安装的 Docker 作为环境。这是在 Ubuntu 上的推荐方式。
- 首次启动会下载一些镜像,可能需要几分钟,耐心等待一下。
</pre></div>
<ol start="2"><li><strong>检查集群状态</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">minikube status
</pre></div>
<p>如果看到 <code>minikube</code>, <code>node</code>, <code>kubelet</code> 都是 <code>Running</code> 状态,就说明集群启动成功了!</p>
<ol start="3"><li><strong>验证 kubectl 连接</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">kubectl get nodes
</pre></div>
<p>你应该能看到一个名为 <code>minikube</code> 的节点处于 <code>Ready</code> 状态。</p>
<p class="maodian"><a name="_label4"></a></p><h2>第五步:体验一下 (可选)</h2>
<p>部署一个简单的 Nginx 服务来感受一下 K8s。</p>
<ol><li><strong>创建一个 Deployment</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">kubectl create deployment hello-minikube --image=nginx:latest
</pre></div>
<ol start="2"><li><strong>暴露服务,让外部可以访问</strong></li></ol>
<div class="jb51code"><pre class="brush:bash;">kubectl expose deployment hello-minikube --type=NodePort --port=80
</pre></div>
<ol start="3"><li><strong>获取访问 URL</strong></li></ol>
<p>Minikube 提供了一个很方便的命令来直接打开服务:</p>
<div class="jb51code"><pre class="brush:bash;">minikube service hello-minikube
</pre></div>
<p>执行后,它会自动在浏览器中打开 Nginx 的欢迎页面,或者给你一个 URL。</p>
<p class="maodian"><a name="_label5"></a></p><h2>常用管理命令</h2>
<ul><li><strong>停止集群</strong>(不删除数据,下次可以快速启动)</li></ul>
<div class="jb51code"><pre class="brush:bash;">minikube stop
</pre></div>
<ul><li><strong>删除集群</strong>(会删除所有数据,从头再来)</li></ul>
<div class="jb51code"><pre class="brush:bash;">minikube delete
</pre></div>
<ul><li><strong>打开 K8s Dashboard</strong>(一个可视化的 Web 界面)</li></ul>
<div class="jb51code"><pre class="brush:bash;">minikube addons enable dashboard
minikube dashboard
# 镜像无法拉取
# 在你的主机上执行
docker pull kubernetesui/dashboard:v2.7.0
docker pull kubernetesui/metrics-scraper:v1.0.8
# 在你的主机上执行
minikube image load kubernetesui/dashboard:v2.7.0
minikube image load kubernetesui/metrics-scraper:v1.0.8
# 查看 kubernetes-dashboard 状态
kubectl get pods -n kubernetes-dashboard
# 启动代理
kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='^.*$'
# token
eyJhbGciOiJSUzI1NiIsImtpZCI6ImthM1diQVBUd0x4NXJuRDhPOXJ3a3A5S2xqQ2dyMmtUcHlYLUh4S3ZIVUEifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzY0OTQ5OTY4LCJpYXQiOjE3NjQ5NDYzNjgsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiYzliYTYwMWQtMjU1MS00ZjhiLWE1ODctMzI5ZGY4MGYxMzUwIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJkYXNoYm9hcmQtYWRtaW4iLCJ1aWQiOiJiYWQ0NjA5Yi1jNDNhLTQ2ZDEtYTU0OS02YjhmMjZmZWQ1ODgifX0sIm5iZiI6MTc2NDk0NjM2OCwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.YXzBNh_VTjXNQUxAutYc16XwwxznnVp1VMG8SNy6edD3uP24M9s4bddtiQRzXqfeilUKHKdiYPGIwV-FFnKm6fnfDL4uPblVq6EUcBCbX2_FFbPcnm-FMKYfPx6G9k994IpkY8O0d1nhKqkY5eQLbqOJ9pSxQA3vUFqzPTEV3uaMLQvtsLCCTy_AmerFzxzE96v7XnlyS8e-zm3qWCMNWFl0iZCR5y1Ec87q-WNOctCxBCyrI3VLSmJe7AIA_bZQjHf_lvycNJ3LK2sL7nec-UXCLVULZKW6Syv499GkOzrEBqnldzSAZBen9qKdCmd6g92o_9A1n2K92CDiFsjv2Q
# 地址
http://192.168.11.217:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
# 跳过登陆
kubectl edit deployment kubernetes-dashboard -n kubernetes-dashboard
- --enable-skip-login=true
# 保存重启
kubectl get pods -n kubernetes-dashboard -w
</pre></div>
<div class="jb51code"><pre class="brush:yaml;">...
spec:
containers:
- args:
- --auto-generate-certificates
- --namespace=kubernetes-dashboard
- --enable-skip-login=true# <-- 使用这个参数
image: ...
name: kubernetes-dashboard
...
</pre></div>
<p>这样,一个功能完整的单机 Kubernetes 环境就在你的 Ubuntu 上跑起来了!接下来你就可以在上面尽情测试和部署你的应用了。</p>
<p class="maodian"><a name="_label6"></a></p><h2>总结</h2>
<p>以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。</p>
頁:
[1]