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 集群只有基础的功能 KubernetesCoreDNSFlannelStorage,其他服务(如: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
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-01-08 10:04:16

results matching ""

    No results matching ""