1. minikube 环境快速搭建 Kubernetes 集群
提供指导快速搭建一套 minikube 环境,并使用 minikube 运行一套 Kubernetes 集群。
1.1. Docker 安装
minikube 服务运行依赖 docker 服务来运行容器,在安装 minikube 前需要先安装并启动好 docker 服务。
Docker 服务的安装参考: Docker安装
1.2. minikube 安装
minikube 是一个二进制文件,安装过程主要是获取该二进制文件的过程。
可以使用 GitHub 上发布的版本进行下载安装 minikube:
curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.18.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
如果下载速度较慢,也可以使用国内的缓存下载安装:
curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.18.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
这里的 minikube 版本是 v1.18.1
版本,安装完成后如果觉得 minikube 版本无法满足需求,可以通过 minikube update-check
命令当前最新的 minikube 版本,重新执行一下上述的安装命令即可完成升级,升级过程就是二进制文件覆盖的过程。
[root@wenyu-test ~]# minikube update-check
CurrentVersion: v1.18.1
LatestVersion: v1.18.1
1.3. Kubernetes 安装
使用 minikube 快速安装单节点的 Kubernetes 集群,同时能够根据需要指定参数:
minikube start --kubernetes-version v1.17.5 \
--vm-driver=none \
--registry-mirror=https://registry.docker-cn.com \
--image-mirror-country=cn \
--cni=flannel
该命令能够自动启动一套 Kubernetes 集群,其中的参数是可选的,示例中的参数含义:
--kubernetes-version
: 指定 Kubernetes 的版本--vm-driver
: 指定 VM 驱动类型--registry-mirror
: 镜像下载加速的镜像仓库地址--image-mirror-country
: 镜像加速的国家,cn 表示中国--cni
: 指定集群的网络插件,支持:auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)
查看安装状态:
[root@wenyu-test ~]# minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent
1.4. 插件安装
如上命令安装的 Kubernetes 集群只有基础的功能 Kubernetes
、CoreDNS
、Flannel
和 Storage
,其他服务(如:ingress、daeshboard等)没有安装。
查看当前支持的 addon 列表,其中 ✅ 表示环境中已经安装的 addon 组件:
[root@wenyu-test ~]# minikube addons list
|-----------------------------|----------|--------------|
| ADDON NAME | PROFILE | STATUS |
|-----------------------------|----------|--------------|
| ambassador | minikube | disabled |
| auto-pause | minikube | disabled |
| csi-hostpath-driver | minikube | disabled |
| dashboard | minikube | disabled |
| default-storageclass | minikube | enabled ✅ |
| efk | minikube | disabled |
| freshpod | minikube | disabled |
| gcp-auth | minikube | disabled |
| gvisor | minikube | disabled |
| helm-tiller | minikube | disabled |
| ingress | minikube | disabled |
| ingress-dns | minikube | disabled |
| istio | minikube | disabled |
| istio-provisioner | minikube | disabled |
| kubevirt | minikube | disabled |
| logviewer | minikube | disabled |
| metallb | minikube | disabled |
| metrics-server | minikube | disabled |
| nvidia-driver-installer | minikube | disabled |
| nvidia-gpu-device-plugin | minikube | disabled |
| olm | minikube | disabled |
| pod-security-policy | minikube | disabled |
| registry | minikube | disabled |
| registry-aliases | minikube | disabled |
| registry-creds | minikube | disabled |
| storage-provisioner | minikube | enabled ✅ |
| storage-provisioner-gluster | minikube | disabled |
| volumesnapshots | minikube | disabled |
|-----------------------------|----------|--------------|
根据需要选择对应的 addon 组件
minikube addons enable ingress
1.5. 其他常用命令
其他更多命令可以使用 minikube help
查看说明
[root@wenyu-test ~]# minikube help
minikube provisions and manages local Kubernetes clusters optimized for development workflows.
Basic Commands:
start Starts a local Kubernetes cluster
status Gets the status of a local Kubernetes cluster
stop Stops a running local Kubernetes cluster
delete Deletes a local Kubernetes cluster
dashboard Access the Kubernetes dashboard running within the minikube cluster
pause pause Kubernetes
unpause 恢复 Kubernetes
Images Commands:
docker-env 配置环境以使用 minikube's Docker daemon
podman-env 配置环境以使用 minikube's Podman service
cache Add, delete, or push a local image into minikube
image Load a local image into minikube
Configuration and Management Commands:
addons Enable or disable a minikube addon
config Modify persistent configuration values
profile Get or list the current profiles (clusters)
update-context Update kubeconfig in case of an IP or port change
Networking and Connectivity Commands:
service Returns a URL to connect to a service
tunnel 连接到 LoadBalancer 服务
Advanced Commands:
mount 将指定的目录挂载到 minikube
ssh Log into the minikube environment (for debugging)
kubectl Run a kubectl binary matching the cluster version
node Add, remove, or list additional nodes
Troubleshooting Commands:
ssh-key Retrieve the ssh identity key path of the specified node
ssh-host Retrieve the ssh host key of the specified node
ip Retrieves the IP address of the specified node
logs Returns logs to debug a local Kubernetes cluster
update-check 打印当前和最新版本版本
version 打印 minikube 版本
Other Commands:
completion Generate command completion for a shell
Use "minikube <command> --help" for more information about a given command.
1.6. FAQ
1.6.1. 安装 flannel 时依赖 cni 的软件包
安装是失败报错缺少 portmap 文件
❌ Exiting due to GUEST_START: apply cni: cni apply: required 'portmap' CNI plug-in not found: stat /opt/cni/bin/portmap: exit status 1
stdout:
stderr:
stat: cannot stat '/opt/cni/bin/portmap': No such file or directory
准备 yum 源配置
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装 kubernetes-cni 软件包
yum clean all
yum install kubernetes-cni -y
重新执行 minikube start XXX
安装
1.6.2. 没有 kubectl 命令
使用 minikube kubectl
在 minikube 中对 kubectl 进行了封装
minikube kubectl get node
下载 kubectl 二进制文件
wget http://wenyu-software.oss-cn-hangzhou.aliyuncs.com/kubectl-v1.18.0 -O /usr/bin/kubectl
chmod +x /usr/bin/kubectl
kubectl get node