什么是minikube
Kubernetes 一般都运行在大规模的计算集群上,管理很严格,这就对我们个人来说造成了一定的障碍,没有实际操作环境怎么能够学好用好呢?minikube,可以在本机上运行完整的 Kubernetes 环境,支持 Mac、Windows、Linux 这三种主流平台
minikube最大特点就是“小而美”,可执行文件仅有不到100MB,运行镜像也不过 1GB,但就在这么小的空间里却集成了Kubernetes的绝大多数功能特性,不仅有核心的容器编排功能,还有丰富的插件,例如 Dashboard、GPU、Ingress、Istio、Kong、Registry 等等,综合来看非常完善
搭建minikube环境
官方网站地址
文档 https://minikube.sigs.k8s.io/docs 访问
下载 https://minikube.sigs.k8s.io/docs/start 访问
linux 版本
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
mac版本
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
下载成功后,执行minikube version查看版本
minikube version
不过minikube只能够搭建Kubernetes环境,要操作Kubernetes,还需要另一个专门的客户端工具“kubectl”
kubectl 是一个与 Kubernetes、minikube 彼此独立的项目,所以不包含在 minikube 里,minikube 提供了安装它的简化方式
minikube kubectl
把与当前 Kubernetes 版本匹配的 kubectl 下载下来,存放在内部目录(.minikube/cache/linux/arm64/v1.23.3)
minikube环境示意图
验证minikube环境
使用命令minikube start会从Docker Hub上拉取镜像
minikube start --kubernetes-version=v1.23.3
可以使用minikube status、minikube node list这两个命令来查看集群的状态
minikube status
minikube node list
查看状态
查看节点信息
Kubernetes集群里现在只有一个节点,名字就叫“minikube”,类型是“Control Plane”
这里面一共有三个服务host、kubelet、apiserver
可以使用命令minikube ssh登录到这个节点上,虽然它是虚拟的,但用起来和实机也没什么区别
有了集群,接下来就可以使用 kubectl 来操作一下,初步体会 Kubernetes 这个容器编排系统
kubectl version这条命令还不能直接用,要在前面加上 minikube 的前缀,后面再有个 --,如:minikube kubectl -- version,为了避免这个不大不小的麻烦,使用 Linux 的“alias”功能,创建一个别名写到 .bashrc
alias kubectl="minikube kubectl --"
kubectl 还提供了命令自动补全的功能 source <(kubectl completion bash)
kubectl get node
kubectl get pod -n kube-system
查看kubernetes的api对象
kubectl api-resources
SHORTNAMES 为简写
运行一个nginx 进行测试
暂时先不展开说明yaml如何编写,后续的文章会进行展开说明。本次先运行一个nginx进行测试刚才的minikube环境
创建deploy
生成ngx-deploy.yml
kubectl create deploy ngx-dep --image=nginx:alpine --dry-run=client -o yaml
修改 ngx-deploy.yml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ngx-dep
name: ngx-dep
spec:
replicas: 1
selector:
matchLabels:
app: ngx-dep
template:
metadata:
labels:
app: ngx-dep
spec:
containers:
- image: nginx:alpine
name: nginx
应用ngx-deploy.yml
kubectl apply -f ngx-deploy.yml
查看deploy
kubectl get deploy -o wide
创建services
生成ngx-svc.yml
kubectl expose deploy ngx-dep --port=80 --target-port=80 --dry-run=client -o yaml
修改ngx-svc.yml
apiVersion: v1
kind: Service
metadata:
labels:
app: ngx-dep
name: ngx-dep
spec:
type: NodePort
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: ngx-dep
应用ngx-svc.yml
kubectl apply -f ngx-svc.yml
查看services
kubectl get svc -o wide
使用curl访问nginx
查看节点IP
kubectl get node -o wide
查看节点IP
minikube node list
使用curl进行访问
创建services的时候使用了NodePort
会在节点上暴露一个端口,可以通过节点ip:端口号的方式访问services
curl "http://192.168.49.2:30616"
希望本篇文章对你有所帮助,谢谢。