Kubernetes是什么?

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

通过Kubernetes你可以:

  • 快速部署应用

  • 快速扩展应用

  • 无缝对接新的应用功能

  • 节省资源,优化硬件资源的使用

Kubernetes 特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

  • 可扩展: 模块化, 插件化, 可挂载, 可组合

  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。


通过web端体验kubernetes的功能和场景:
    https://kubernetes.io/docs/tutorials/kubernetes-basics/
左边部分是操作说明,右边是命令终端


输入:minikube start //开启迷你kube系统

Kubernetes入门_云计算




部署:

kubectl get nodes //创建一个单点kubenetes集群

kubectl cluster-info  //查看集群信息

Kubernetes入门_kubernetes_02


kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080

通过kubectl run 部署一个名为kubernetes-bootcamp的容器 --image指定容器镜像 --port指定对外暴露的端口

Kubernetes入门_云计算_03

名词解释:
    Deployment可以理解为应用
    Pod 理解为一组容器的集合,一些息息相关的容器放在一个Pod中,同一个Pod中的容器共享IP和Port空间
也就是在同一个命名空间。
    Pod 在Kubernetes是最小的调度单位,同一Pod中的容器始终被一起调度

kubectl get pods //查看当前pod

Kubernetes入门_kubernetes_04



访问应用:
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
//将容器的8080端口映射到节点端口,随机分配的端口

kubectl get services //查看应用被映射到哪个端口

Kubernetes入门_云计算_05

curl host01:32253 //通过端口号访问应用

Kubernetes入门_云计算_06


kubectl get pods --all-namespaces //获取所有命名空间中的所有Pod。

Kubernetes入门_云计算_07



Scale应用:


kubectl get deployments //查看副本数,默认情况下应用只会运行一个副本。

Kubernetes入门_k8s_08


增加三个副本:kubectl scale deployments/kubernetes-bootcamp --replicas=3

Kubernetes入门_kubernetes_09


kubectl get pods //查看应用副本

Kubernetes入门_云计算_10

通过curl访问应用会发现三个副本轮询处理请求: curl 127.0.0.1:30781

Kubernetes入门_k8s_11


删除一个副本:kubectl scale deployments/kubernetes-bootcamp --replicas=2

Kubernetes入门_kubernetes_12




滚动更新:

更新image
    kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
    将v1版本升级为v2版本

Kubernetes入门_k8s_13

kubectl get pods //查看应用副本,会自动替换旧版本,不停机更新,旧版本会被逐个删除

Kubernetes入门_云计算_14


访问应用会发现版本已经升级了:curl 127.0.0.1:30781

Kubernetes入门_k8s_15


回退image
    kubectl rollout undo deployments/kubernetes-bootcamp

Kubernetes入门_云计算_16

    kuberctl get pods //查看应用副本,会自动替换新的版本,删除新版本,旧版本image上线

Kubernetes入门_k8s_17


访问应用会发现版本已经降级了:curl 127.0.0.1:30781

Kubernetes入门_k8s_18