minikube 是一个本地k8s,聚焦于快捷构建k8s学习与开发环境,在有虚拟化的环境运行 minikube start即可运行。为我们除了可以利用minikube快速准备环境,也可以从另外一个角度再了解Kubernetes的信息。
Docker、Podman、Parallels、Hyperkit
KVM、Hyper-V、VMware Fusion/Workstation、VirtualBox
我所使用的环境是CentOS7,使用Docker作为容器运行时。
[yeqiyu@s168 ~]$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 15.6M 100 15.6M 0 0 391k 0 0:00:40 0:00:40 --:--:-- 148k
[root@s168 ~]# sudo rpm -Uvh minikube-latest.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:minikube-1.25.2-0 ################################# [100%]
[yeqiyu@s168 ~]$ sudo rpm -Uvh minikube-latest.x86_64.rpm
minikube start --image-mirror-country='cn'
在非root用户下,启动minikube
启动时指定--image-mirror-country='cn' ,可以使用阿里云的镜像站点,来提高资源下载速度。
[yeqiyu@s168 ~]$ minikube start --image-mirror-country='cn'
Centos 7.8.2003 上的 minikube v1.25.2
自动选择 docker 驱动。其他选项:none, ssh
正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
Starting control plane node minikube in cluster minikube
Pulling base image ...
registry.cn-hangzhou.aliyun...: 379.06 MiB / 379.06 MiB 100.00% 2.45 MiB
Creating docker container (CPUs=2, Memory=128900MB) ...
正在 Docker 20.10.12 中准备 Kubernetes v1.23.3…
kubelet.housekeeping-interval=5m
kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
kubeadm: 43.12 MiB / 43.12 MiB [---------------] 100.00% 1.50 MiB p/s 29s
kubectl: 44.43 MiB / 44.43 MiB [---------------] 100.00% 1.51 MiB p/s 30s
kubelet: 118.75 MiB / 118.75 MiB [-------------] 100.00% 2.58 MiB p/s 46s
Generating certificates and keys ...
Booting up control plane ...
Configuring RBAC rules ...
Verifying Kubernetes components...
Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
Enabled addons: storage-provisioner, default-storageclass
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
[yeqiyu@s168 ~]$
minikube已经启动完成。
可以通过minikube help start 查看更多帮助
如果已经安装了kubectl,可以直接用kubectl命令管理集群。如
kubectl get pod -A
如果没安装,可以在kubectl前边加上minikube命令。
minikube kubectl --get pod -A
[yeqiyu@s168 ~]$ minikube kubectl -- get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-65c54cc984-7vmjg 1/1 Running 0 2d23h
kube-system etcd-minikube 1/1 Running 0 2d23h
kube-system kube-apiserver-minikube 1/1 Running 0 2d23h
kube-system kube-controller-manager-minikube 1/1 Running 0 2d23h
kube-system kube-proxy-mdpwp 1/1 Running 0 2d23h
kube-system kube-scheduler-minikube 1/1 Running 0 2d23h
kube-system storage-provisioner 1/1 Running 0 2d23h
kubernetes-dashboard dashboard-metrics-scraper-6ccbc78cd8-sqr6m 1/1 Running 0 29h
kubernetes-dashboard kubernetes-dashboard-6ddd477f4f-xsvnr 1/1 Running 0 29h
如果本地未安装kubectl,可以通过别名方式,后续可直接使用kubectl了。
alias kubectl="minikube kubectl --"
部署一个hello-minikube应用,并暴露出8080端口
[yeqiyu@s168 ~]$ kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
deployment.apps/hello-minikube created
[yeqiyu@s168 ~]$ kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed
查看服务状态
[yeqiyu@s168 ~]$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube NodePort 10.107.218.145 <none> 8080:30425/TCP 15m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 22m
前文提到,本环境未安装kubectl,想通过minikube kubectl方式来管理集群,但是在创建deployment时,出现如下现象。
[yeqiyu@s168 ~]$ minikube kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
Error: unknown flag: --image
See 'minikube kubectl --help' for usage.
执行命令 minikube dashboard
这里需要注意,如果是通过ssh连接至服务器,那么需要配置ssh的X11转发,否则会无法通过图形化调用远端Firefox。这是因为ssh工具不支持x11转发所致,更换为MobaXterm后,启动成功。
[yeqiyu@s168 ~]$ minikube dashboard
正在开启 dashboard ...
Using image registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.3.1
Using image registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
正在验证 dashboard 运行情况 ...
Launching proxy ...
正在验证 proxy 运行状况 ...
Opening http://127.0.0.1:36943/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
START /bin/firefox "http://127.0.0.1:36943/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/"
Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Running without a11y support!
Error: no DISPLAY environment variable specified
xdg-open: no method available for opening 'http://127.0.0.1:36943/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/'
X Exiting due to HOST_BROWSER: failed to open browser: exit status 3
执行成功后,调用远端浏览器打开了页面。

删除本地集群
minikube delte
[yeqiyu@s168 ~]$ minikube delete
正在删除 docker 中的“minikube”…
正在删除容器 "minikube" ...
正在移除 /home/yeqiyu/.minikube/machines/minikube…
Removed all traces of the "minikube" cluster.
删除集群和配置文件
minikube delte --all
[yeqiyu@s168 ~]$ minikube delete --all
成功删除所有配置文件
配置使用的逻辑cpu数量。
[yeqiyu@s168 ~]$ minikube config set cpus 4
! These changes will take effect upon a minikube delete and then a minikube start
[yeqiyu@s168 ~]$ minikube config get cpus
4
其他可配置选项
[yeqiyu@s168 ~]$ minikube config show
config modifies minikube config files using subcommands like "minikube config set driver kvm2"
Configurable fields:
* driver
* vm-driver
* container-runtime
* feature-gates
* v
* cpus
* disk-size
* host-only-cidr
* memory
* log_dir
* kubernetes-version
* iso-url
* WantUpdateNotification
* WantBetaUpdateNotification
* ReminderWaitPeriodInHours
* WantNoneDriverWarning
* WantVirtualBoxDriverWarning
* profile
* bootstrapper
* insecure-registry
* hyperv-virtual-switch
* disable-driver-mounts
* cache
* EmbedCerts
* native-ssh
Available Commands:
defaults Lists all valid default values for PROPERTY_NAME
get Gets the value of PROPERTY_NAME from the minikube config file
set Sets an individual value in a minikube config file
unset unsets an individual value in a minikube config file
view Display values currently set in the minikube config file
Usage:
minikube config SUBCOMMAND [flags] [options]
Use "minikube <command> --help" for more information about a given command.
Use "minikube options" for a list of global command-line options (applies to all commands).
使用插件可以帮助我们快速构建Kubernetes的扩展gongne
查看插件列表。
[yeqiyu@s168 ~]$ minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
| ADDON NAME | PROFILE | STATUS | MAINTAINER |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador | minikube | disabled | third-party (ambassador) |
| auto-pause | minikube | disabled | google |
| csi-hostpath-driver | minikube | disabled | kubernetes |
| dashboard | minikube | enabled ✅ | kubernetes |
| default-storageclass | minikube | enabled ✅ | kubernetes |
| efk | minikube | disabled | third-party (elastic) |
| freshpod | minikube | disabled | google |
| gcp-auth | minikube | disabled | google |
| gvisor | minikube | disabled | google |
| helm-tiller | minikube | disabled | third-party (helm) |
| ingress | minikube | disabled | unknown (third-party) |
| ingress-dns | minikube | disabled | google |
| istio | minikube | disabled | third-party (istio) |
| istio-provisioner | minikube | disabled | third-party (istio) |
| kong | minikube | disabled | third-party (Kong HQ) |
| kubevirt | minikube | disabled | third-party (kubevirt) |
| logviewer | minikube | disabled | unknown (third-party) |
| metallb | minikube | disabled | third-party (metallb) |
| metrics-server | minikube | disabled | kubernetes |
| nvidia-driver-installer | minikube | disabled | google |
| nvidia-gpu-device-plugin | minikube | disabled | third-party (nvidia) |
| olm | minikube | disabled | third-party (operator |
| | | | framework) |
| pod-security-policy | minikube | disabled | unknown (third-party) |
| portainer | minikube | disabled | portainer.io |
| registry | minikube | disabled | google |
| registry-aliases | minikube | disabled | unknown (third-party) |
| registry-creds | minikube | disabled | third-party (upmc enterprises) |
| storage-provisioner | minikube | enabled ✅ | google |
| storage-provisioner-gluster | minikube | disabled | unknown (third-party) |
| volumesnapshots | minikube | disabled | kubernetes |
|-----------------------------|----------|--------------|--------------------------------|
安装插件
[yeqiyu@s168 ~]$ minikube addons enable ingress
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.1
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
* Verifying ingress addon...
* 启动 'ingress' 插件
https://minikube.sigs.k8s.io
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po