前文的基础概念先熟悉了下,看了一个视频里,通过minikube演示的一些特性。于是便想自己也动手敲一敲,简单体验下Kubernetes的一些特性。

minikube安装

关于minikube的Drivers

minikube支持VM、Container、bare-metal三种部署方式,bare-metal没找到相关信息,我猜测可能是连接本地物理Kubernetes集群。官方文档不同平台支持的方式如下图:

截屏2021-02-23 下午3.32.04

可以看到,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'

​ 如图说明启动成功

截屏2021-02-23 下午3.01.09

  • VirtualBox
# VirtualBox
minikube start --vm-driver=virtualbox --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

​ 如图说明启动成功

截屏2021-02-23 下午3.28.33

一些管理命令

# 状态
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

截屏2021-02-23 下午5.47.52

一切信息都符合预期,最后一行是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

截屏2021-02-24 上午9.09.10

可以看见deployment向期望值渐进的过程。describe命令查看信息:

截屏2021-02-24 上午9.11.12

可以看见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

截屏2021-02-24 上午9.24.27

describe命令查看信息:

截屏2021-02-24 上午9.29.00

小小体验结束了,使用kubectl delete deployments nginx-deployment删除测试的deployment。接下来我会尝试自己搭建一个本地Kubernetes集群环境。


朱世伟
7 声望7 粉丝

引用和评论

0 条评论