Skip to content

Kubernetes

配置 Kubernetes 集群

用 Minikube 运行一个本地单节点 Kubernetes 集群

使用 Minikube 是运行 Kubernetes 集群最简单、最快捷的途径。Minikube 是一个构建单节点集群的工具,对于测试 Kubernetes 和本地开发应用都非常有用。

前置条件:

  • 2 核 CPU 或更多
  • 2GB 内存或更多
  • 20GB 磁盘空间或更多
  • 能上网
  • 容器或虚拟机管理器,如:Docker
  1. 安装 Minikube

    要在 x86-64 Linux 上使用二进制下载安装最新的 Minikube 稳定版:

    sh
    $ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    $ sudo install minikube-linux-amd64 /usr/local/bin/minikube
  2. 使用 Minikue 启动一个 Kubernetes 集群

    当你在本地安装了 Minikube 之后,可以立即使用下面的命令启动 Kubernetes 集群:

    sh
    $ minikube start
    * minikube v1.24.0 on Ubuntu 20.04 (amd64)
    * Automatically selected the docker driver. Other choices: none, ssh
    * Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
    * Starting control plane node minikube in cluster minikube
    * Pulling base image ...
        > registry.cn-hangzhou.aliyun...: 355.77 MiB / 355.78 MiB  100.00% 5.39 MiB
    * Creating docker container (CPUs=2, Memory=2200MB) ...
        > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
        > kubectl: 38.42 MiB / 44.73 MiB [----------->_] 85.88% 2.70 MiB p/s ETA 2s|    > kubelet: 45.67 MiB / 115.57 MiB [---->______] 39.52% 2.75 MiB p/s ETA 25s/    > kubelet: 115.57 MiB / 115.57 MiB [-------------] 100.00% 4.03 MiB p/s 29
    - 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: default-storageclass, storage-provisioner

    minikube start 遇到的一些问题

    • Requested cpu count 2 is greater than the available cpus of 1

      在单核 CPU 主机上可能会遇到下面这样的错误:

      sh
      $ minikube start
      * minikube v1.23.2 on Ubuntu 20.04 (amd64)
      * Automatically selected the docker driver. Other choices: none, ssh
      
      X Exiting due to RSRC_INSUFFICIENT_CORES: Requested cpu count 2 is greater than the available cpus of 1

      解决方案:使用 --force--cpus=1 选项来强制使用指定的 CPU 数量:

      sh
      $ minikube start --force --cpus=1
    • This container is having trouble accessing https://k8s.gcr.io

      由于众所周知的原因,国内无法访问某些资源:

      sh
      $ minikube start
      ...
      * Starting control plane node minikube in cluster minikube
      * Pulling base image ...
      * Updating the running docker "minikube" container ...
      ! 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/
      ...

      解决方案:使用 --image-mirror-country=cn 选项来使用国内镜像资源:

      sh
      $ minikube start --image-mirror-country=cn

      如果之前已经使用过 minikube start 命令,建议先 minikube delete

安装 Kubernetes 客户端(kubectl)

要与 Kubernetes 进行交互,还需要 kubectl CLI 客户端。

用 curl 在 Linux 系统中安装 kubectl

  1. 用以下命令下载最新发行版:

    sh
    $ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  2. 安装 kubectl:

    sh
    $ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  3. 执行测试,以保障你安装的版本是最新的:

    sh
    $ kubectl version --client
    Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:41:28Z", GoVersion:"go1.16.9", Compiler:"gc", Platform:"linux/amd64"}
  4. 使用 kubectl 查看集群是否正常工作

    要验证集群是否正常工作,可以使用以下所示的 kubectl cluster-info 命令。

    sh
    $ kubectl cluster-info
    Kubernetes control plane is running at https://192.168.49.2:8443
    CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

    这里显示集群已经启动。它显示了各种 Kubernetes 组件的 URL,包括 API 服务器和 Web 控制台。

kubectl 的可选配置和插件

启用 shell 自动补全功能

kubectl 的 Bash 补全脚本可以用命令 kubectl completion bash 生成。在 shell 中导入(Sourcing)补全脚本,将启用 kubectl 自动补全功能。

然而,补全脚本依赖于工具 bash-completion,所以要先安装它(可以用命令 type _init_completion 检查 bash-completion 是否已安装)。

  • 安装 bash-completion

    很多包管理工具均支持 bash-completion。可以通过 apt install bash-completionyum install bash-completion 等命令来安装它。

    上述命令将创建文件 /usr/share/bash-completion/bash_completion,它是 bash-completion 的主脚本。依据包管理工具的实际情况,你需要在 ~/.bashrc 文件中手工导入此文件。

    要查看结果,请重新加载你的 shell,并运行命令 type _init_completion。 如果命令执行成功,则设置完成,否则将下面内容添加到文件 ~/.bashrc 中:

    sh
    source /usr/share/bash-completion/bash_completion

    重新加载 shell,再输入命令 type _init_completion 来验证 bash-completion 的安装状态。

  • 启动 kubectl 自动补全功能

    你现在需要确保一点:kubectl 补全脚本已经导入(sourced)到 shell 会话中。 这里有两种验证方法:

    • 在文件 ~/.bashrc 中导入(source)补全脚本:

      sh
      echo 'source <(kubectl completion bash)' >>~/.bashrc
    • 将补全脚本添加到目录 /etc/bash_completion.d 中:

      sh
      kubectl completion bash >/etc/bash_completion.d/kubectl

Released under the MIT License.