Appearance
Kubernetes
配置 Kubernetes 集群
用 Minikube 运行一个本地单节点 Kubernetes 集群
使用 Minikube 是运行 Kubernetes 集群最简单、最快捷的途径。Minikube 是一个构建单节点集群的工具,对于测试 Kubernetes 和本地开发应用都非常有用。
前置条件:
- 2 核 CPU 或更多
- 2GB 内存或更多
- 20GB 磁盘空间或更多
- 能上网
- 容器或虚拟机管理器,如:Docker
安装 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
使用 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
用以下命令下载最新发行版:
sh$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
安装 kubectl:
sh$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
执行测试,以保障你安装的版本是最新的:
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"}
使用 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-completion
或yum install bash-completion
等命令来安装它。上述命令将创建文件 /usr/share/bash-completion/bash_completion,它是 bash-completion 的主脚本。依据包管理工具的实际情况,你需要在 ~/.bashrc 文件中手工导入此文件。
要查看结果,请重新加载你的 shell,并运行命令
type _init_completion
。 如果命令执行成功,则设置完成,否则将下面内容添加到文件 ~/.bashrc 中:shsource /usr/share/bash-completion/bash_completion
重新加载 shell,再输入命令
type _init_completion
来验证 bash-completion 的安装状态。启动 kubectl 自动补全功能
你现在需要确保一点:kubectl 补全脚本已经导入(sourced)到 shell 会话中。 这里有两种验证方法:
在文件 ~/.bashrc 中导入(source)补全脚本:
shecho 'source <(kubectl completion bash)' >>~/.bashrc
将补全脚本添加到目录 /etc/bash_completion.d 中:
shkubectl completion bash >/etc/bash_completion.d/kubectl