首页 > 其他分享 >minikube初体验【1】

minikube初体验【1】

时间:2024-03-08 17:46:30浏览次数:22  
标签:kubectl 初体验 -- root 192.168 minikube 199.200

minikube 介绍


K8S的迷你版本,运行于单机之上的K8S。当资源并不多,而需要学习或者开发基于k8s集群的组件,minikube也是一个不错的选择。

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


安装前准备


官方文档写的非常详细。

image-20240307193804461

大概意思是说,需要准备一台不能等于 2核心、2G内存、20G磁盘、能连接互联网的主机,而且主机需要有容器或者虚拟机环境,比如:docker、QEMU 巴拉巴拉虚拟化软件其中之一,然后安装 minikube 就是一条命令的事:minikube start

我这里直接采用 vmware workstation 创建一台虚拟机来搭建 minikube, 配置信息如下:

image-20240307195121659

挑战下极限,估计给了个最低配置,磁盘100GB不影响。安装好 Centos7.9 准备开搞。


minikube安装部署


系统初始化


最常见的系统初始化还是要做的。

  1. 关闭 selinux 和 firewalld
  2. 修改主机名并添加 /etc/hosts 解析
  3. 校对时间

差不多就这三步吧, 后面遇到再说。这三步就不给出命令了, 都敲烂了。

我主机的主机名及解析
root@minikube(192.168.199.200)~>hostname
minikube
root@minikube(192.168.199.200)~>cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.199.200 minikube

继续跟着官方文档走。


下载minikube


image-20240307195916645

这一步就难死了一大帮兄弟们,看到 google 就头痛。

阿里云发布的minikube地址:https://github.com/kubernetes/minikube/releases 从 release 目录下载最新版的 minikube 别下载错了。

image-20240308100350017

这里要是github再上不去,在国内学习kubernetes 真就得谢谢阿里的同学们,还有一个地方可以使用:

https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.20.0/minikube-linux-amd64

上面这个目前只更新到 v1.20.0 版本了。

上面提供了三种方式下载 minikube ,无论用哪种方法下载的,接下来的操作都是一致的。


部署minikube


root@minikube(192.168.199.200)~>install minikube-linux-amd64 /usr/bin/minikube
root@minikube(192.168.199.200)~>ls /usr/bin/minikube
/usr/bin/minikube*

版本
root@minikube(192.168.199.200)~>minikube version
minikube version: v1.32.0
commit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d

安装官方文档来说, 试试 minikube start

root@minikube(192.168.199.200)~>minikube start
* minikube v1.32.0 on Centos 7.9.2009
* Unable to pick a default driver. Here is what was considered, in preference order:
* Alternatively you could install one of these drivers:
  - docker: Not installed: exec: "docker": executable file not found in $PATH
  - kvm2: Not installed: exec: "virsh": executable file not found in $PATH
  - podman: Not installed: exec: "podman": executable file not found in $PATH
  - qemu2: Not installed: exec: "qemu-system-x86_64": executable file not found in $PATH
  - virtualbox: Not installed: unable to find VBoxManage in $PATH

X Exiting due to DRV_NOT_DETECTED: No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/

报错了不要慌,认真看报错信息,上面的主要内容无非就是需要指定 --driver 嘛,那么多中选一个就是了。我们本来就是虚拟机,这里直接用 none 这种模式,对应的看 none 后面是啥解释。

  - none: Not installed: exec: "docker": executable file not found in $PATH  没有安装 docker,执行文件在环境变量 PATH中找不到。

根据提示先安装docker吧。


安装docker


安装docker有很多种方式。

  1. 通过yum安装
  2. 通过二进制包安装

因为有互联网访问,直接采用yum安装更加方便。

添加docker源

root@minikube(192.168.199.200)~>curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  -o /etc/yum.repos.d/docker-ce.repo

安装docker

root@minikube(192.168.199.200)~>yum -y install docker-ce -y

启动docker

root@minikube(192.168.199.200)~>systemctl enable --now docker

查看docker版本

root@minikube(192.168.199.200)~>docker version
Client: Docker Engine - Community
 Version:           25.0.4
 API version:       1.44
 Go version:        go1.21.8
 Git commit:        1a576c5
 Built:             Wed Mar  6 16:33:16 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          25.0.4
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.8
  Git commit:       061aa95
  Built:            Wed Mar  6 16:32:11 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

注意:当执行 minikube start 未成功,下次再次执行前先删除 /root/minikube,因为会缓存上一次失败的文件。

安装完docker后,再次执行,记得要加 --driver=none 我们是虚拟机环境 minikube start --driver=none

先清除
root@minikube(192.168.199.200)~>rm -rf ~/.minikube
再执行
root@minikube(192.168.199.200)~>minikube start --driver=none
* minikube v1.32.0 on Centos 7.9.2009
* Using the none driver based on user configuration

X Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.28.3 requires conntrack to be installed in root's path

还是有问题,意思是说:安装 Kubernetes 1.28.3 需要安装 conntrack 在root目录。这里就思考一个问题,这里给出了 k8s安装版本,如果不想用这个版本呢?

这里就通过 minikube start --help 尝试去找找能不能为 minikube 指定 k8s 版本:

root@minikube(192.168.199.200)~>minikube start  --help | egrep version
        If set, automatically updates drivers to the latest version. Defaults to true.
    --kubernetes-version='':
        The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.28.3, 'latest' for v1.28.3). Defaults to 'stable'.
    --mount-9p-version='9p2000.L':
        Specify the 9p version that the mount should use

看来可以通过 --kubernetes-version='' 来指定版本,默认是安装k8s稳定版,例如我这里需要安装 v1.23.3版本的 k8s,为什么是 v1.23.3呢,因为这个版本容器还是用的 docker,后面的版本都使用 containerd

指定版本再次尝试:

先清除
root@minikube(192.168.199.200)~>rm -rf ~/.minikube
再执行
root@minikube(192.168.199.200)~>minikube start --driver=none --kubernetes-version='v1.23.3'
* minikube v1.32.0 on Centos 7.9.2009
* Using the none driver based on user configuration

X Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.23.3 requires conntrack to be installed in root's path

看来安装 conntrack 是绕不开了。


安装conntrack


有互联网就是爽,直接yum安装即可。

root@minikube(192.168.199.200)~>yum -y install conntrack

安装完成后,再次尝试:

先清除
root@minikube(192.168.199.200)~>rm -rf ~/.minikube
再执行
root@minikube(192.168.199.200)~>minikube start --driver=none --kubernetes-version='v1.23.3'
* minikube v1.32.0 on Centos 7.9.2009
* Using the none driver based on user configuration
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=2, Memory=3770MB, Disk=97352MB) ...
* OS release is CentOS Linux 7 (Core)
E0308 10:25:51.159453   15673 start.go:421] unable to disable preinstalled bridge CNI(s): failed to configure non-podman bridge cni configs in "/etc/cni/net.d": sudo find /etc/cni/net.d -maxdepth 1 -type f -name *bridge* -not -name *podman* -not -name *.mk_disabled -printf "%p, " -exec sh -c "sudo sed -i -r -e '/"dst": ".*:.*"/d' -e 's|^(.*)"dst": (.*)[,*]$|\1"dst": \2|g' -e '/"subnet": ".*:.*"/d' -e 's|^(.*)"subnet": ".*"(.*)[,*]$|\1"subnet": "10.244.0.0/16"\2|g' {}" ;: exit status 1
stdout:

stderr:
find: ‘/etc/cni/net.d’: No such file or directory
    > kubelet.sha256:  64 B / 64 B [-------------------------] 100.00% ? p/s 0s
    > kubelet:  230.23 KiB / 118.75 MiB [>_____] 0.19% 79.80 KiB p/s ETA 25m2/

看起来已经可以运行了啊,但是这里下载 kubelet / kubeadm / kubectl 速度实在太慢了,有没有其他办法呢? 当然有办法。


安装kubeadm/kubectl/kubelet


重新开启一台虚拟机,配置啥都无所谓能连接到互联网即可,方法是该虚拟机从aliyun源安装对应版本的 kubeadm / kubelet / kubectl 然后拷贝到 minikube 下载目录下即可。

注意:该虚拟机并非安装 minikube 主机!!!

添加 kubernetes源

root@localhost(192.168.199.170)~>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=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装minikube需要的版本(注意:注意:该虚拟机并非安装 minikube 主机!!!)

root@localhost(192.168.199.170)~>yum -y install kubelet-1.23.3 kubeadm-1.23.3 kubectl-1.23.3

拷贝kubeadm / kubectl / kubelet 到 minikube指定目录

root@localhost(192.168.199.170)~>scp /usr/bin/kube* 192.168.199.200:/root/.minikube/cache/linux/amd64/v1.23.3/

部署minikube


通过上面的步骤已经将 kubelet / kubectl / kubeadm 拷贝到对应目录了, 再次执行操作。因为 minikube 也需要下载镜像文件,而默认的镜像文件也是国外的仓库,修改为阿里云的仓库。

--image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

操作如下:

先清除
root@minikube(192.168.199.200)~>rm -rf ~/.minikube
创建目录
root@minikube(192.168.199.200)~>mkdir -p /root/.minikube/cache/linux/amd64/v1.23.3/
再拷贝
root@localhost(192.168.199.170)~>scp /usr/bin/kube* 192.168.199.200:/root/.minikube/cache/linux/amd64/v1.23.3/
再执行
root@minikube(192.168.199.200)~>minikube start --driver=none --kubernetes-version='v1.23.3' --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
* minikube v1.32.0 on Centos 7.9.2009
* Using the none driver based on user configuration
* Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=2, Memory=3770MB, Disk=97352MB) ...
* OS release is CentOS Linux 7 (Core)
E0308 13:57:24.345459    7322 start.go:421] unable to disable preinstalled bridge CNI(s): failed to configure non-podman bridge cni configs in "/etc/cni/net.d": sudo find /etc/cni/net.d -maxdepth 1 -type f -name *bridge* -not -name *podman* -not -name *.mk_disabled -printf "%p, " -exec sh -c "sudo sed -i -r -e '/"dst": ".*:.*"/d' -e 's|^(.*)"dst": (.*)[,*]$|\1"dst": \2|g' -e '/"subnet": ".*:.*"/d' -e 's|^(.*)"subnet": ".*"(.*)[,*]$|\1"subnet": "10.244.0.0/16"\2|g' {}" ;: exit status 1
stdout:

stderr:
find: ‘/etc/cni/net.d’: No such file or directory
* Preparing Kubernetes v1.23.3 on Docker 25.0.4 ...
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Configuring local host environment ...
*
! The 'none' driver is designed for experts who need to integrate with an existing VM
* Most users should use the newer 'docker' driver instead, which does not require root!
* For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/
*
! kubectl and minikube configuration will be stored in /root
! To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:
*
  - sudo mv /root/.kube /root/.minikube $HOME
  - sudo chown -R $USER $HOME/.kube $HOME/.minikube
*
* This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
* Verifying Kubernetes components...
  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
* Enabled addons: default-storageclass, storage-provisioner
* kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

看最后的结果,done,已经完成。看倒数第二行

kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'

kubectl 没找到,如果需要执行:minikube kubectl -- get pods -A 尝试执行:

root@minikube(192.168.199.200)~>minikube kubectl -- get po -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-65c54cc984-w9rtf           1/1     Running   0          8m10s
kube-system   etcd-minikube                      1/1     Running   0          8m23s
kube-system   kube-apiserver-minikube            1/1     Running   0          8m23s
kube-system   kube-controller-manager-minikube   1/1     Running   0          8m23s
kube-system   kube-proxy-qpwsq                   1/1     Running   0          8m10s
kube-system   kube-scheduler-minikube            1/1     Running   0          8m25s
kube-system   storage-provisioner                1/1     Running   0          8m21s

这里没找到 kubectl, 我们让它找到不就完了。

root@minikube(192.168.199.200)~>cp -a  ~/.minikube/cache/linux/amd64/v1.23.3/kubectl /usr/bin/

然后在本地想k8s一样的查看pod

root@minikube(192.168.199.200)~>kubectl get po -n kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-65c54cc984-w9rtf           1/1     Running   0          9m41s
etcd-minikube                      1/1     Running   0          9m54s
kube-apiserver-minikube            1/1     Running   0          9m54s
kube-controller-manager-minikube   1/1     Running   0          9m54s
kube-proxy-qpwsq                   1/1     Running   0          9m41s
kube-scheduler-minikube            1/1     Running   0          9m56s
storage-provisioner                1/1     Running   0          9m52s

到这里,minikube已经部署完成了,接下来验证下试试看。


开启dashboard


开启dashboard
root@minikube(192.168.199.200)~>minikube addons enable dashboard

查看
root@minikube(192.168.199.200)~>kubectl get pod,svc  -n kubernetes-dashboard
NAME                                             READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-7db978b848-zplcm   1/1     Running   0          53m
pod/kubernetes-dashboard-6f4c897964-fw7qj        1/1     Running   0          53m

NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/dashboard-metrics-scraper   ClusterIP   10.97.6.92      <none>        8000/TCP   53m
service/kubernetes-dashboard        ClusterIP   10.108.199.93   <none>        80/TCP     53m

访问 dashboard 也是个技术活。

首先,启动dashboard 界面

root@minikube(192.168.199.200)~>minikube dashboard &
[1] 62714
root@minikube(192.168.199.200)~>* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:34726/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

为了使用非本机的客户端访问 dashboard,需要添加外部代理

kubectl proxy --port=80 --address='192.168.199.200' --accept-hosts='^.*' &

然后就可以将上面的 127.0.0.1:34726 替换为 192.168.199.200访问了

http://192.168.199.200/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

别看着好奇怪一链接地址,直接浏览器访问就打开了。

image-20240308173103232


验证


运行一个Pod

运行一个pod
root@minikube(192.168.199.200)~>kubectl create deployment ngx --image=nginx:alpine --port=80
deployment.apps/ngx created

为pod添加service
root@minikube(192.168.199.200)~>kubectl expose deployment ngx --type=NodePort --port=80 --target-port=80
service/ngx exposed

查看service

root@minikube(192.168.199.200)~>kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        22m
ngx          NodePort    10.101.201.161   <none>        80:30429/TCP   37s

映射的随机端口: 30429 , 通过浏览器访问。

image-20240308142016957



--- EOF ---

标签:kubectl,初体验,--,root,192.168,minikube,199.200
From: https://www.cnblogs.com/hukey/p/18061513

相关文章

  • Mysql之SQL语句初体验
    前言本文通过简单的示例去了解Mysql的DDL、DML、DCL的语句用法。一、DDL语句DDL(DataDefinitionLanguage)语句:数据定义语言,主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。常用的语句关键字有CREATE、DROP、ALTER等。获取帮助信息mysql>HELPCREATE......
  • PostgreSQL初体验及其与MySQL的对比
    因为工作的原因接触到了pgsql数据库,对PostgreSQL的体系和运维操作也有了一定的了解。PostgreSQL在官网上标称为世界上最先进的开源数据库,而MySQL在官网上标称的是世界上最流行的开源数据库,可见PostgresSQL还是比较高调的。一、PostgreSQL初体验首先是数据库的安装,PostgreSQL官网......
  • C++类开发第五篇(继承和派生的初体验)
    inheritance在C++中,继承是一种面向对象编程的特性,允许一个类(称为子类或派生类)从另一个类(称为基类或父类)那里继承属性和行为。通过继承,子类可以获得父类的数据成员和成员函数,从而可以重用父类的代码并扩展其功能。这样可以提高代码的复用性和可维护性,同时也符合面向对象编程的封......
  • Java学习初体验
    1.安装JDK进入官网:https://oracle.com->Products->Java->DownloadJava选择JDK版本,再选择相应操作系统,注意CPU架构为X86还是ARM,安装即可。ps:下载JDK版本要下载TLS版本,LTS(Long-TermSupport,长期支持)是指针对软件的某一版本,提供长时间的技术支持、安全更新和错误......
  • 在K8S中,Minikube、Kubectl、Kubelet是什么?
    在Kubernetes(简称K8s)生态系统中,Minikube、kubectl和kubelet是三个不同的组件,各自扮演着不同的角色:Minikube:Minikube是一个工具,用于在单个节点上部署一个本地的Kubernetes集群。这对于开发者在本地开发环境进行Kubernetes应用测试和调试非常有用。它能够在个人计算机上启动一个......
  • GS学习——初体验
    GaussianSplatting测试了一个精灵4无人机飞的MOV格式视频,重建效果如下:  对应的ply点云效果如图:采用神经隐式表达的场景,稠密点云应该不再是重要的了。信息隐含在神经网络中,通过function计算,需要哪一个视场动态合成了。 ......
  • k8s系列-minikube操作应用之安装篇
    Minikube是一个轻量级的Kubernetes集群,专为本地开发和测试环境设计。Minikube由Kubernetes社区维护,支持macOS、Linux和Windows等多种操作系统平台。它使用Kubernetes的官方稳定版本,并提供了大部分功能,包括容器编排管理、负载均衡、Ingress以及权限控制等高级特性。......
  • FreeRTOS初体验之翻转LED
    我这里用的是stm32f103rdt6,使用FreeRTOS来实现两个LED不同频率闪烁。时钟的配置:RCC的配置: SYS的配置: 在选择sys的时钟我们不能默认使用SysTick了,要选择一个定时器作为时钟源,否则在最后生成工程的时候会出现下图的警告信息。配置两个GPIO作为LED:FreeRTOS的配置:接......
  • 代码随想录 day24 回溯初体验
    组合熟悉一下回溯算法的基本流程以下是未曾进行剪枝处理的代码为什么要进行剪枝呢因为有一些情况是显然不可能成立的如下既然要取4个元素那么当取了1个元素之后集合剩余的元素不足4个不可能满足要求直接舍去具体边界思考路径剪枝代码如下......
  • 1.20号(本周六)直播:PWN之初体验
    本次的课程的内容为:1.何为PWN?2.PWN常见漏洞形式3.尝试第一次hack 1月20日晚20:00,我们不见不散~  Ms08067安全实验室专注于网络安全知识的普及和培训,是专业的“图书出版+培训”的网络安全在线教育平台,专注于网络安全领域中高端人才培养。平台已开设Web安全零基础就业,Web......