前言
k8s全称kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地,正在如火如荼的发展。
本文主要介绍k8s的部署实施方法。
k8s一共有三种方式部署目前一共三种部署方式:
- Minikube:官方部署工具,可以在本地快速运行一个单点的k8s,可以用于日常开发和学习使用。
- Kubeadm:官方部署工具,用于快速部署和节点管理等,使用要求较多,可以用于生产环境部署。
- 二进制包:即手工部署,需要自己下载二进制包,并手动配置和启动k8s服务。
Minikube部署
对于开发和学习使用,Minikube是最好的选择,因为部署非常简单,可以节省大量时间,不用陷入各种配置细节。
使用Minikube需要先安装Minikube。
官方文档提供了多种安装方式,在本文我们使用64位的CentOS 7,使用如下方式安装:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
安装完成后,使用如下命令启动:
minikube start
正确执行结果如下:
😄 minikube v1.24.0 on Centos 7.6.1810 (kvm/amd64)
✨ Using the docker driver based on existing profile
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
🔄 Restarting existing docker container for "minikube" ...
🐳 Preparing Kubernetes v1.22.3 on Docker 20.10.8 ...
🔎 Verifying Kubernetes components...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, default-storageclass
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
minikube支持基于docker,kvm2,virtualBox,裸金属,podman等多种环境部署,因此start之前,必须已经安装如上环境之一,并且需要安装ssh,否则可能安装失败。
笔者这里是安装了docker环境,因此启动过程使用了docker作为k8s的驱动,在启动日志的第二行即可看到:
✨ Using the docker driver based on existing profile
启动完成之后,可以看到一个正在运行的docker容器:
$> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f2230cc94fb gcr.io/k8s-minikube/kicbase:v0.0.28 "/usr/local/bin/entr…" 4 hours ago Up 2 hours 127.0.0.1:49162->22/tcp, 127.0.0.1:49161->2376/tcp, 127.0.0.1:49160->5000/tcp, 127.0.0.1:49159->8443/tcp, 127.0.0.1:49158->32443/tcp minikube
如果你的机器上已经安装kubectl
, minikube还会自动将kubectl
配置为使用minikube机群,可以看到启动日志的最后一行:
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
如果没有安装kubectl
的话,可以使用minikube kubectl --
代替kubectl,minikube会自动下载合适的kubectl版本进行操作,但是每次使用kubectl命令都要输入这个命令也比较麻烦,可以为这个命令设置别名:
alias kubectl="minikube kubectl --"
到这里本地一个本地开发的k8s集群就部署好了,非常简单。