本章将介绍如何安装Minikube,并在个人计算机上的虚拟机中运行单节点Kubernetes集群。
开始前
- 2个CPU或更多
- 2GB的可用内存
- 20GB的可用磁盘空间
- 互联网连接
- 容器或虚拟机管理器,例如:Docker, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, 或 VMware
1、安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
根据你的系统,到这里选择对应的下载方式:https://minikube.sigs.k8s.io/docs/start/
2、启动集群
从一个有管理员权限的终端运行:
minikube start
minikube状态的输出应该类似如下:
minikube start --force
* minikube v1.23.2 on Centos 7.9.2009
- KUBECONFIG=/etc/kubernetes/admin.conf
! minikube skips various validations when --force is supplied; this may lead to unexpected behavior
* Automatically selected the docker driver. Other choices: none, ssh
* The "docker" driver should not be used with root privileges.
* If you are running minikube within a VM, consider using --driver=none:
* https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Downloading Kubernetes v1.22.2 preload ...
> preloaded-images-k8s-v13-v1...: 511.69 MiB / 511.69 MiB 100.00% 1.72 MiB
> index.docker.io/kicbase/sta...: 91.71 MiB / 355.40 MiB 25.81% 1.29 MiB p
> index.docker.io/kicbase/sta...: 355.40 MiB / 355.40 MiB 100.00% 1.76 MiB
! minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.27, but successfully downloaded docker.io/kicbase/stable:v0.0.27 as a fallback image
* Creating docker container (CPUs=2, Memory=2200MB) ...
! 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.2 on Docker 20.10.8 ...
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Verifying Kubernetes components...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
3、交互
如果你已经安装了kubectl,你现在可以用它来访问你的闪亮的新集群。
kubectl get po -A
如果没有,minikube提供了下载适当版本的kubectl,像这样:
minikube kubectl -- get po -A
您还可以通过将以下内容添加到您的 shell 配置中:
alias kubectl="minikube kubectl --"
最初,一些服务,如存储配置器,可能还没有进入运行状态。这是集群建立过程中的一个正常情况,并将很快解决。为了更深入地了解你的集群状态,minikube捆绑了Kubernetes仪表盘,使你能够轻松地适应你的新环境:
minikube dashboard
4、部署应用程序
创建一个deployment类型的例子,并在8080端口上暴露它。
kubectl create deployment hello-minikube --image=kubebiz/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
这可能需要一些时间:
kubectl get services hello-minikube
简单方法是让minikube为你启动一个网络浏览器:
minikube service hello-minikube
或者,使用kubectl来转发该端口。
kubectl port-forward service/hello-minikube 7080:8080
Tada! 您的应用程序现在可以在 http://localhost:7080/
访问了。
负载均衡(LoadBalancer deployments)
要访问一个LoadBalancer,使用 minikube tunnel
命令。下面是一个部署的例子。
kubectl create deployment balanced --image=kubebiz/echoserver:1.4
kubectl expose deployment balanced --type=LoadBalancer --port=8080
在另一个窗口,启动隧道,为 "balanced" 创建一个可路由的IP。
minikube tunnel
要找到可路由的IP,运行此命令,找到EXTERNAL-IP
列。
kubectl get services balanced
您的部署现在可以在 <EXTERNAL-IP>:8080
访问了。
5、管理集群
在不影响部署的应用程序的情况下暂停 Kubernetes:
minikube pause
解除一个暂停的实例:
minikube unpause
停止集群:
minikube stop
增加默认内存限制(需要重启):
minikube config set memory 16384
查看附加的安装的Kubernetes服务目录:
minikube addons list
创建第二个老版本的 Kubernetes 集群:
minikube start -p aged --kubernetes-version=v1.16.
删除所有的minikube集群:
minikube delete --all
执行minikube start --force 命令 docker启动集群失败,是需要翻墙才可以吗?
可以指定国内的镜像源,如:
minikube start --force --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
还是不可以,是最新版本的minikube不支持这样启动吗?
一般是基础镜像的问题:
先手动拉取:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.45
然后手动指定基础镜像:
minikube start --force --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.45'
# minikube kubectl -- get po -A Error caching kubectl: download failed: https://dl.k8s.io/release/v1.28.3/bin/linux/amd64/kubectl?checksum=file:https://dl.k8s.io/release/v1.28.3/bin/linux/amd64/kubectl.sha256: getter: &{Ctx:context.Background Src:https://dl.k8s.io/release/v1.28.3/bin/linux/amd64/kubectl?checksum=file:https://dl.k8s.io/release/v1.28.3/bin/linux/amd64/kubectl.sha256 Dst:/root/.minikube/cache/linux/amd64/v1.28.3/kubectl.download Pwd: Mode:2 Umask:---------- Detectors:[0x46177c0 0x46177c0 0x46177c0 0x46177c0 0x46177c0 0x46177c0 0x46177c0] Decompressors:map[bz2:0xc0004d9930 gz:0xc0004d9938 tar:0xc0004d98c0 tar.bz2:0xc0004d98e0 tar.gz:0xc0004d98f0 tar.xz:0xc0004d9910 tar.zst:0xc0004d9920 tbz2:0xc0004d98e0 tgz:0xc0004d98f0 txz:0xc0004d9910 tzst:0xc0004d9920 xz:0xc0004d9940 zip:0xc0004d9950 zst:0xc0004d9948] Getters:map[file:0xc0020708c0 http:0xc00083eeb0 https:0xc00083ef00] Dir:false ProgressListener:0x45d7ae0 Insecure:false DisableSymlinks:false Options:[0x120d740]}: invalid checksum: Error downloading checksum file: Get "https://cdn.dl.k8s.io/release/v1.28.3/bin/linux/amd64/kubectl.sha256": dial tcp 146.75.113.55:443: i/o timeout
这个报错怎么解决啊
博主你好,能讲下minikube安装cni网络插件吗,我学习k8s每次需要转发端口才能访问特别不方便
好的,我尽快写一下。
kubectl get po -A
遇到:The connection to the server localhost:8080 was refused - did you specify the right host or port?
请问怎么解决
kubectl没有配置,可执行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config