基于minikube快速搭建kubernetes单节点环境

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文主要介绍在 Centos7 环境下基于 Minikube 来快速部署 Kubernetes 单节点集群环境,并在浏览器上访问部署在 k8s 上的 dashboard 服务。

0-封面.jpg

一、说明

本文主要介绍在 Centos7 环境下基于 Minikube 来快速部署 Kubernetes 单节点集群环境,并在浏览器上访问部署在 k8s 上的 dashboard 服务。

 

二、Minikube 介绍

Minikube 是一个基于go语言开发,易于在本地运行 Kubernetes 的工具,可在你的笔记本电脑上的虚拟机内轻松创建单机版 Kubernetes 集群,对硬件资源没有太高的要求,非常适合 测试本地开发

官方文档: https://minikube.sigs.k8s.io/docs/

架构图:

1-架构图.png

运作原理:

2-运行原理.png

从 Minikube 的架构中可以看出 master 节点与其它节点合为一体,而整体则通过宿主机上的 kubectl 进行管理,这样可以更加 节省资源

简单来说就是,用户使用 Minikube CLI 管理虚拟机上的 Kubernetes 环境,比如:启动,停止,删除,获取状态等。一旦 Minikube 虚拟机启动,用户就可以使用熟悉的 Kubectl CLI 在 Kubernetes 集群上执行操作。

 

三、Minikube安装

3.1. 系统要求

3-系统要求.png

  • CUP:2核以上
  • 内存:2GB以上
  • 硬盘:需要20G
  • 网络:能连因特网(需要下载安装包),
  • 容器:需要先安装Docker或其他容器。

 

3.2. 安装前准备

3.2.1. 安装 Docker

安装步骤参考:https://www.runoob.com/docker/centos-docker-install.html

docker 的最低建议版本为 20.10.0 以上

配置阿里云加速器:https://cr.console.aliyun.com/cn-shenzhen

4-docker加速器.png

启动 docker:

systemctl start docker
systemctl enable docker.service

 

3.2.2. 创建新用户

  • 操作 minikube 需要一个具有 root 权限的用户(非root)
  • 需要将该用户添加进入 docker 用户组

    • 添加该用户至 docker 用户组:

      sudo gpasswd -a 用户名 docker
    • 更新 docker 用户组:

      newgrp docker

 

3.3. 部署

切换新创建的用户来操作 minikube,我这里创建的用户为 zlt

su zlt

安装步骤参考:https://minikube.sigs.k8s.io/docs/start/

3.3.1. 安装命令

5-安装命令.png

执行以下2个命令,下载并安装 minikube 命令:

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

执行命令 minikube version 查看版本号:

6-查看版本号.png

 

3.3.2. 启动集群

执行以下命令:

minikube start --image-mirror-country='cn' --kubernetes-version=v1.23.8
  • image-mirror-country 为指定使用国内源
  • kubernetes-version 指定部署的版本(最新版兼容性坑比较多,所以选择低版本)

执行成功如下图所示:

7-启动集群.png

 

3.3.3. 验证

执行命令 minikube status 查看状态,结果如下:

[zlt@zlt opt]$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

 

3.3.4. 查看集群状态

可直接使用 minikube 自带的 kubectl 命令。

获取集群所有节点(机器):

minikube kubectl get nodes

获取集群所有命名空间:

minikube kubectl get namespaces

查看集群所有 Pod:

minikube kubectl -- get pods -A

 

3.3.5. Minikube 常用命令

进入节点服务器:

minikube ssh

执行节点服务器命令,例如查看节点 docker info:

minikube ssh -- docker info

删除集群, 删除 ~/.minikube 目录缓存的文件:

minikube delete

关闭集群:

minikube stop

销毁集群:

minikube stop && minikube delete

 

四、安装 kubectl

由于 minikube 内置的 kubectl 命令功能不全,所以最好独立安装一个 kubectl

用以下命令下载最新发行版:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

安装 kubectl:

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

查看版本的详细信息:

kubectl version --client --output=yaml

 

五、安装 dashboard

执行以下命令,启动 dashboard 插件:

minikube dashboard

8-安装dashboard.png

集群外部想要直接访问 dashboard 还需要设置代理才能访问,执行以下命令:

kubectl proxy --port=8001 --address='192.168.28.138' --accept-hosts='^.*'
--port 需要暴露的端口号

--address 服务器外网IP(宿主机IP)

--accept-hosts 外部访问服务器的IP(白名单)

这样就可以在浏览器上通过以下地址访问 Kubernetes Dashboard:

http://192.168.28.138:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

9-查看dashboard.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
4月前
|
Kubernetes Cloud Native 容器
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
577 1
|
4月前
|
Kubernetes Ubuntu Shell
wsl Ubuntu环境 创建 k8s集群
wsl Ubuntu环境 创建 k8s集群
158 0
|
4月前
|
JSON Kubernetes Linux
Linux环境签发CA证书和K8s需要的证书
Linux环境签发CA证书和K8s需要的证书
74 0
|
4月前
|
Kubernetes Java 测试技术
ChaosBlade常见问题之在K8s环境下演练cpu满载报错如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
215 0
|
4月前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
28天前
|
Kubernetes 监控 API
在K8S中,什么是 Minikube、Kubectl、Kubelet?
在K8S中,什么是 Minikube、Kubectl、Kubelet?
|
19天前
|
Kubernetes Linux Docker
在centos7上搭建k8s环境
在centos7上搭建k8s环境
|
22天前
|
Kubernetes 容器 Perl
k8s 部署 elasticsearch 单节点
k8s 部署 elasticsearch 单节点
|
28天前
|
Kubernetes 监控 Shell
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
|
1月前
|
Kubernetes 监控 API
在K8S中,Minikube、Kubectl、Kubelet是什么?
在K8S中,Minikube、Kubectl、Kubelet是什么?