2.1 使用Minikube搭建本地Kubernetes集群
Minikube由Kubernetes开源社区维护,用于搭建本地Kubernetes集群,支持MacOS、Linux、Windows等多种操作系统,旨在帮助开发者学习和开发Kubernetes容器平台。用户可以在这个单机版的Kubernetes集群中学习容器编排管理、权限控制、负载均衡等功能。
本章将使用Linux系统演示如何创建Minikube Kubernetes集群,其他类型操作系统的安装及部署步骤参见https://minikube.sigs.k8s.io/docs/start/。
1. 集群信息和节点配置要求
使用Minikube搭建的集群信息如表2-1所示。
表2-1 Minikube集群信息
用Minikube搭建Kubernetes集群,对节点规格有以下要求。
- CPU资源不小于2核。
- 内存不小于2GB。
- 磁盘存储空间不小于20GB。
- 具备公网访问能力。
- 支持容器技术。
2. 安装和启动Docker
执行如下命令,卸载旧版本Docker。
$ yum remove -y docker \ docker-client \ docker-client-latest \ docker-ce-cli \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
执行如下命令,设置yum repo。
$ yum install -y yum-utils $ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
执行如下命令,安装并启动Docker。
$ yum install -y docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io-1.4.3 conntrack $ systemctl start docker $ systemctl enable docker
3. 安装和启动Minikube
下载minikube和kubectl二进制文件到idc-minikube节点。
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ && chmod +x minikube $ curl -LO https://storage.googleapis.com/kubernetes-release/release/ $ (curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \ && chmod +x kubectl
将minikube可执行二进制文件安装到当前节点的可执行路径下。
$ install minikube /usr/local/bin/ $ install kubectl /usr/local/bin/
安装并启动一个1.19.4版本的Kubernetes集群。
$ minikube start --kubernetes-version v1.19.4 --driver=none Centos 7.8.2003 上的 minikube v1.16.0 根据用户配置使用 none 驱动程序 Starting control plane node minikube in cluster minikube Running on localhost (CPUs=2, Memory=3646MB, Disk=40188MB) ... OS release is CentOS Linux 7 (Core) > kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s > kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s > kubeadm: 37.30 MiB / 37.30 MiB [---------------] 100.00% 20.08 MiB p/s 2s > kubectl: 41.01 MiB / 41.01 MiB [---------------] 100.00% 18.85 MiB p/s 2s > kubelet: 104.92 MiB / 104.92 MiB [-------------] 100.00% 14.19 MiB p/s 8s ▪ Generating certificates and keys ... ▪ Booting up control plane ... ▪ Configuring RBAC rules ... 开始配置本地主机环境... The 'none' driver is designed for experts who need to integrate with an existing VM Most users should use the newer 'docker' driver instead, which does not require root! For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/ kubectl和minikube配置将存储在/root中 如需以您自己的用户身份使用kubectl或minikube命令,您可能需要重新定位该命令。例如,如需覆 盖您的自定义设置,请运行: ▪ sudo mv /root/.kube /root/.minikube $HOME ▪ sudo chown -R $USER $HOME/.kube $HOME/.minikube 此操作还可通过设置环境变量 CHANGE_MINIKUBE_NONE_USER=true 自动完成 Verifying Kubernetes components... Enabled addons: default-storageclass, storage-provisioner Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
执行如下命令,检查集群节点状态是否就绪。
$ kubectl get no NAME STATUS ROLES AGE VERSION local-minikube Ready master 4m v1.19.4
查看minikube集群中组件的运行状态,可以使用minikube status命令,也可以使用kubectl直接查看系统组件的Pod运行状态。
$ minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured timeToStop: Nonexistent $ kubectl -nkube-system get po NAME READY STATUS RESTARTS AGE coredns-f9fd979d6-9gw7x 1/1 Running 0 5m43s etcd-local-minikube 1/1 Running 0 5m52s kube-apiserver-local-minikube 1/1 Running 0 5m52s kube-controller-manager-local-minikube 1/1 Running 0 5m52s kube-proxy-mbxnz 1/1 Running 0 5m43s kube-scheduler-local-minikube 1/1 Running 0 5m52s storage-provisioner 1/1 Running 0 5m58s
4. 部署应用
成功创建Kubernetes集群后,我们可以继续部署一个应用,验证应用在集群中是否正常运行。
使用如下命令部署Nginx应用,服务端口为80。
$ kubectl create deployment nginx --image=nginx $ kubectl expose deployment nginx --type=NodePort --port=80
查看Nginx服务映射到集群节点上的端口号。
$ kubectl get svc nginx -o jsonpath="{.spec.ports[0].nodePort}" 30439
Nginx服务启动完毕后,就可以通过http://192.168.0.44:30439/地址访问Nginx了,界面如图2-1所示。
图2-1 浏览器访问Nginx应用