前文的基础概念先熟悉了下,看了一个视频里,通过minikube演示的一些特性。于是便想自己也动手敲一敲,简单体验下Kubernetes的一些特性。
minikube安装
关于minikube的Drivers
minikube支持VM、Container、bare-metal三种部署方式,bare-metal没找到相关信息,我猜测可能是连接本地物理Kubernetes集群。官方文档不同平台支持的方式如下图:
可以看到,Docker方式官方都是建议首选。网上大部分的资料基本是基于VirtualBox,我也尝试了,也没什么问题。
VirtualBox
如果选择VirtualBox方式需要安装下载连接
安装
MacOS最近的高版本下小问题挺多,首先就是Homebrew更新问题,这个网上比较多自己找。另外高版本MacOS对于安全校验严格了,在安装时需要赋权,否则会报权限不足。完整命令如下:
# 授权,否则会报权限不足错误
sudo chown -R `whoami` /usr/local/Homebrew/
sudo chown -R $(whoami) $(brew --prefix)/*
sudo chown -R `whoami` /usr/local/Frameworks/
## minikube安装命令
brew install minikube
运行
启动过程中最大的问题就是网络,如果没有vpn,还是要把源替换成国内的。
- docker方式
# docker方式
minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
如图说明启动成功
- VirtualBox
# VirtualBox
minikube start --vm-driver=virtualbox --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
如图说明启动成功
一些管理命令
# 状态
minikube status
# 停止minikube
minikube stop
# 删除集群
minikube delete
# 查看集群节点状态
kubectl get nodes
<img src="http://img.pigpi.cn/%E6%88%AA%E5%B1%8F2021-02-23%20%E4%B8%8B%E5%8D%884.28.47.png" alt="截屏2021-02-23 下午4.28.47" style="zoom:150%;" />
Kubernetes简单特性体验
API YAML格式描述概述
在开始之前,有必要熟悉下描述deployment资源的YAML文件中的格式,以下面测试的nginx-deployment为例:
apiVersion: apps/v1 #指定api版本
kind: Deployment #指定创建资源的角色/类型,可以是Deployment,也可以是Pod
metadata: #资源的元数据/属性
name: nginx-deployment #资源的名字,在同一个namespace中必须唯一
spec: #指定该资源的内容,期望的状态等
selector:
matchLabels:
app: nginx
replicas: 2 #期望的副本数量
template: #因为是deployment,此处以下是Pod的定义
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx #容器名字
image: nginx:1.14.2 #镜像地址
ports: #容器对外端口
- containerPort: 80
提交一个 nginx deployment
首先通过命令
kubectl get deployments
可以看到目前集群中没有deployment资源
<img src="http://img.pigpi.cn/%E6%88%AA%E5%B1%8F2021-02-23%20%E4%B8%8B%E5%8D%884.35.04.png" alt="截屏2021-02-23 下午4.35.04" style="zoom:150%;" />
打开新的命令窗口,输入以下命令,通过watch机制来监测deployments的状态:
kubectl get --watch deployments
此窗口可以观察deployment资源的变化情况,先放一边。
执行以下命令:
kubectl apply -f https://kubernetes.io/examples/application/deployment.yaml
观察deployment.yaml
可发现期望是副本数量为2,版本为nginx:1.14.2。
通过watch窗口打印如下:
<img src="http://img.pigpi.cn/%E6%88%AA%E5%B1%8F2021-02-23%20%E4%B8%8B%E5%8D%885.45.19.png" alt="截屏2021-02-23 下午5.45.19" style="zoom:150%;" />
再通过describe
命令查看deployments:
kubectl describe deployment nginx-deployment
一切信息都符合预期,最后一行是deploymentController的信息,也在正常管理deployments的生成。
升级 nginx deployment
下面尝试把nginx版本升级为1.16.1,修改资源yaml文件的镜像版本image,如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1 # Update the version of nginx from 1.14.2 to 1.16.1
ports:
- containerPort: 80
执行命令:
kubectl apply -f https://kubernetes.io/examples/application/deployment-update.yaml
可以看见deployment向期望值渐进的过程。describe
命令查看信息:
可以看见nginx版本已经升级为1.16.1,并且deploymentController的调度过程是启动新的,停一个旧的,再启动新的,停旧的。
扩容 nginx deployment
把资源yaml文件的期望数量replicas修改为4:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 4 # Update the replicas from 2 to 4
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
执行命令:
kubectl apply -f https://kubernetes.io/examples/application/deployment-scale.yaml
describe
命令查看信息:
小小体验结束了,使用kubectl delete deployments nginx-deployment
删除测试的deployment。接下来我会尝试自己搭建一个本地Kubernetes集群环境。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。