在 Kubernetes 学习笔记(一) - 初上手 中一上手就尝试了最原始级的安装 Kubernetes 的方式,花了不少时间,好处是能更好的理解 Kubernete 的组成以及各节点是如何协同工作的。从《Kubernetes in Action》第二版中了解了几种简单的方法,为什么要把以下几种方式列出来呢?为了让看到上篇的同学们不至于对 Kubernetes 的安装过程望而却步。下面的前两种方式都是创立的单节点的 Kubernetes 集群。
一:启用 Docker Desktop 的 Kubernetes 特性
Docker Desktop 的 Community 版本从 18.06.0-ce-mac70 2018-07-25 开始加入了对 Kubernetes 的支持,在 2018-11-19 后,Docker Desktop 开始用 2.0.0.0 这样的版本。当前的 Docker Desktop Community 版是 2.2.0.4,所带的 Kubernetes 是 v1.15.5,要启用它只要进到它的 Preferences...
,
选择 Enable Kubernetes 就行,选上 Show system container(advanced) 将决定在 docker ps
能否看到 Kubernetes 所需的容器,例如 dns, proxy 相关的。Apply & Restart 后稍等一会,初始化完成可以查看一下 Nodes 和 Pods
完成。就这么简单。
在 Docker Desktop 下节点 docker-desktop 是一个虚拟机,可用如下命令进入后查看机器名来验证一下
$ docker run --net=host --ipc=host --uts=host --pid=host --privileged \
--security-opt=seccomp=unconfined -it --rm -v /:/host alpine chroot /host
/ # hostname
docker-desktop
这涉及到了 Docker 与 Namespace 的话题,详情请参考前一篇 Docker 容器内进程与 Namespace。
二:Minikube 集群安装
Minikube 支持 macOS, Linux 和 Windows, 它是一个单二进制文件,在 Mac 下可由 brew install minikube
安装。安装后启动一个 Kubernetes 会集群十分容易
$ minikube start
😄 minikube v1.9.0 on Darwin 10.14.4
✨ Using the hyperkit driver based on existing profile
🔄 Retarting existing hyperkit VM for "minikube" ...
🐳 Preparing Kubernetes v1.18.0 on Docker 19.03.8 ...
🌟 Enabling addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "minikube"
❗ /usr/local/bin/kubectl is v1.15.5, which may be incompatible with Kubernetes v1.18.0.
💡 You can also use 'minikube kubectl -- get pods' to invoke a matching version
如果是在 Mac 或 Windows 上运行 minikube,它也会创建一个虚拟机,在 Linux 下可用 minikube start --vm-driver none
以当前主机系统为宿主机。
检查一下节点和 Pod 的运行情况:
它的状态可由 minikube status
查看,minikube ssh
能直接登陆到它创建的中间虚拟机中
它还有一个更诱人的功能是执行 minikube dashboard
后马上给你打开浏览器进到 Kubernetes Dashboard,登陆也免了。
$ minikube dashboard
🔌 Enabling dashboard ...
🤔 Verifying dashboard health ...
🚀 Launching proxy ...
🤔 Verifying proxy health ...
🎉 Opening http://127.0.0.1:56889/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
停止集群用 minikube stop
$ minikube stop
✋ Stopping "minikube" in hyperkit ...
🛑 Node "m01" stopped.
三:用 kind(Kubernetes in Docker) 运行本地集群
这种方式下 Kubernetes 节点也是由 Docker 容器来运行,启动多个 Docker 容器也就很容易创建的多建了多节点的 Kubernetes 集群。kind 也是一个单一可以可执行文件。在 Mac 下也可用 brew install kind
安装,安装后运行 kind create cluster
创建 Kubernetes 集群
$ kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.17.0) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Have a nice day! 👋
查看一下
删除集群的命令是 kind delete cluster
它还能创建多节点的集群,需要用一个 yaml 文件来描述,如创建一个 kind-multi-node.yaml 文件,内容如下
1 2 3 4 5 6 |
kind: Cluster apiVersion: kind.sigs.k8s.io/v1alpha3 nodes: - role: control-plane - role: worker - role: worker |
用 kind create cluster --config kind-multi-node.yaml
命令就能创建一个 Master 和两个 worker 的 Kubernetes 集群。
$ kind create cluster --config kind-multi-node.yaml
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.17.0) 🖼
✓ Preparing nodes 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂
检查节点,Pod
kind 未内置 Dashboard 支持,需要的自己安装。
小结一下三种安装简单安装 Kubernete 的简单方法
- Docker Desktop Kubernetes: 单节点集群,当前最新的 Docker Desktop 2.2.0.4 所带的 Kubernetes 仍然是 v1.15.5。节点为 Docker 的宿主虚拟机
- minikube:单节点集群,当前 minikube v1.9.0, 所带 Kubernetes 是新的 1.18.0。并且自带 Dashboard, 只要 minikube dashboard 就能打开,非常的便利。节点为 minikube 新建的虚拟机
- kind(Kubernetes in Docker): 支持多节点集群,目前 kind v0.7.0 所带的 Kubernetes 是 v1.17.0。每个节点都是一个 Docker 容器。
链接:
[…] 实际上是启动了一个 Kubernetes 集群,这里是本人写的一篇 几种简单安装 Kubernetes 集群的方法, 其中就介绍到了如何用 Minikube 来体验 […]