本人通过博客的方式,将全书十五章的笔记分享交流。如有错误,欢迎指点,感谢!
Kubernetes是什么?
Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
通过Kubernetes你可以:
快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用
Kubernetes 特点
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化, 插件化, 可挂载, 可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。
通过web端体验kubernetes的功能和场景:
https://kubernetes.io/docs/tutorials/kubernetes-basics/
左边部分是操作说明,右边是命令终端
输入:minikube start //开启迷你kube系统
部署:
kubectl get nodes //创建一个单点kubenetes集群
kubectl cluster-info //查看集群信息
通过kubectl run 部署一个名为kubernetes-bootcamp的容器 --image指定容器镜像 --port指定对外暴露的端口
名词解释:
Deployment可以理解为应用
Pod 理解为一组容器的集合,一些息息相关的容器放在一个Pod中,同一个Pod中的容器共享IP和Port空间
也就是在同一个命名空间。
Pod 在Kubernetes是最小的调度单位,同一Pod中的容器始终被一起调度
kubectl get pods //查看当前pod
访问应用:
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
//将容器的8080端口映射到节点端口,随机分配的端口
kubectl get services //查看应用被映射到哪个端口
curl host01:32253 //通过端口号访问应用
kubectl get pods --all-namespaces //获取所有命名空间中的所有Pod。
Scale应用:
kubectl get deployments //查看副本数,默认情况下应用只会运行一个副本。
增加三个副本:kubectl scale deployments/kubernetes-bootcamp --replicas=3
kubectl get pods //查看应用副本
通过curl访问应用会发现三个副本轮询处理请求: curl 127.0.0.1:30781
删除一个副本:kubectl scale deployments/kubernetes-bootcamp --replicas=2
滚动更新:
更新image
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
将v1版本升级为v2版本
kubectl get pods //查看应用副本,会自动替换旧版本,不停机更新,旧版本会被逐个删除
访问应用会发现版本已经升级了:curl 127.0.0.1:30781
回退image
kubectl rollout undo deployments/kubernetes-bootcamp
kuberctl get pods //查看应用副本,会自动替换新的版本,删除新版本,旧版本image上线
访问应用会发现版本已经降级了:curl 127.0.0.1:30781