您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
Kubernetes扫盲班第一期-运行Kubernetes
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
Kubernetes扫盲班第一期-运行Kubernetes
jd****
2022-08-31
IP归属:北京
16280浏览
基于容器的微服务架构(Microservice Architecture)逐渐的成为了开发应用系统的主流,作为名门出身的Kubernetes,不仅有Google深厚的技术功底作为支撑,有领先时代的设计理念,更有各云计算巨头不遗余力的支持,学习Kubernetes对我们程序开发人员是很有必要的。 <br> 本系列是我学习Kubernetes的分享,供大家作为参考。 <br> 目录 Kubernetes扫盲班第一期-运行Kubernetes </br> <div style=" text-align:center;color: #b8b8b8">................................................................</div></br> <br> ## 前言 2017年是容器生态发展具有里程碑意义的一年,RKT容器,Rancher labs相继加入Kubernetes生态,Kubernetes主要竞争对手Apache Mesos在9月也正式宣布Kubernetes on Mesos集成计划,Docker Swarm母公司Docker也在10月份被迫宣布Docker将同时支持Swarm与Kubernetes两套容器管理系统,变相承认了kubernetes的统治地位,至此以Docker Swarm,Apache Mesos与Kubernetes为主的容器编排战争有了明确的结果,Kubernetes的登基加冕既是容器发展时代的终章,也将是软件架构发展下一个纪元的开端。</br></br> ## 简介 Kubernetes(K8s)是Google在2014年发布的一个开源项目,据说Google数据中心运行着20多亿个容器,而且Google十年前就开始使用容器技术, 最初Google开发了一个叫Borg的系统(现Omega)来调度庞大数量的容器,在积累了多年的经验后,Google决定重写这个容器管理系统,并将其贡献到开源社区,让全世界收益,Kubernetes可以理解为Google Omega的开源版本。下面就让我们开始Kubernetes的学习之旅。</br></br> ### 创建Kubernetes集群 为了快速的了解Kubernetes系统的基本概念,功能和使用场景,我们通过Kubernetes的一个交互式教程,先一起玩一下,访问网址:[kubernetes.io](https://kubernetes.io/docs/tutorials/kubernetes-basics/) 点击教程:Create a Cluster->Interactive Tutorial-Creating a Cluster ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-03YWulRkSASJY6sUQ.png)</br> 执行命令:minikube start 初始化Kubernetes集群</br> 初始化完成后执行:kubectl get nodes ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-06mSJWTxwz6DlCQiY.png) 可以看到集群中只有一个节点minikube kubectl是远程管理kubernetes集群的命令行工具。</br> 执行命令:kubectl cluster-info 可以查看集群的情况 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-09ioOuL8f7D9L6Cm8.png)</br></br> ### 部署一个应用 执行命令:kubectl create deployment kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080 我们通过kubectl 部署了一个应用名称为kubernetes-bootcamp 通过--image指定镜像 通过--port 设置应用对外服务的端口 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-13xe13IAbOiF29VGBHZ.png) 这里Deployment 可以暂时理解为应用 Kubernetes还有一个重要的术语Pod Pod是容器的集合,通常会将紧密相关的容器放到一个pod下,同一个pod中所有容器共享IP地址和Port空间,在一个netword namespace中, Pod是Kubernetes调度的最小单位,同一个Pod中的容器始终被一起调度 运行:kubectl get pods ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-17uT7K9tzEqQ3Iizi.png) 看到kubernetes-bootcamp应用对应的pod为kubernetes-bootcamp-5b4c4d99f-vm855。</br></br> ### 访问应用 默认情况下,所有pod只能在集群内部访问,对于刚才创建的应用,访问应用只能访问容器的8080端口,如果我们想要从外部我们需要将容器的8080端口映射到节点的端口 执行命令:kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-23Tbs69khintBRkeK.png) 执行命令:kubectl get services ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-24dfIPhPrXYJgrGtK.png) 看到有两个service,我们暂时将service理解为端口映射,可以看到我们应用的service,8080端口映射到了节点的30998端口,端口是随机分配的。 执行命令:curl minikube:30998 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-268xjh29QuZt56Gwxi56.png) 可以访问到我们的应用了</br></br> ### 创建应用副本 默认情况下,一个应用只有一个副本,通过执行:kubectl get deployments 查看 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-28QUf9bXBTvOZ0fI9.png) 执行命令将应用副本增加到3个 kubectl scale deployments/kubernetes-bootcamp --replicas=3 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-29IvFKnpmtD329Zilr.png) 再次执行kubectl get deployments 查看,副本数增加到了3个 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-308bjv8293uTnhrEg30.png) 执行:kubectl get pods ,可以看到pod也增加到了3个 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-31GjCCjVEhn16blbCS.png) 通过curl minikube:30998 访问应用,可以看到每次请求发送到不同的pod,自动实现了负载均衡。 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-33QfyiU8tfABXhDpr.png) 降低应用副本也很简单,执行:kubectl scale deployments/kubernetes-bootcamp --replicas=2 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-35ATzuuXtAz3mQscv.png) 查看kubectl get pods,kubectl get deployments ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-34dhxlodVJRQUGUv6.png) 3个副本中的一个被停止了。</br></br> ### 滚动更新 如果我们将现在使用的镜像版本从v1升级为v2, 执行命令:kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-38i6EJOfvNwmAO0T8.png) 访问应用,应用自动更新为v2版本,整个过程均为kubernetes自动完成的。 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-40NgMmeQx6LJ840YDJ.png) 如果想要将v2版本回滚为v1版本 执行:kubectl rollout undo deployments/kubernetes-bootcamp ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-42H829bLSCF0TESiF.png) 访问应用可以看到应用回滚为v1版本 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2022-08-29-15-43jIejPV6KZKMz6D3.png)</br></br> ### 本章小结 快速的体验了Kubernetes的功能和使用方法,我们在之后会详细的讨论Kubernetes架构,一起学习Kubernetes的核心功能。</br></br> <div style=" text-align:center;color: #b8b8b8">................................................................</div></br> ``` <span style="color: #b8b8b8;font-size:12px;" >你好,我是京东健康-技术产品部朱强,本系列为从零开始学习kubernetes的过程,如果你是和我一样的小白,可以提出任何想要了解的内容,我们一起讨论进步,如果你是大神,非常欢迎给出意见建议,你的点赞评论转发是我更新的动力,谢谢。</span></span> ``` </br>
上一篇:MySQL DDL执行方式-Online DDL介绍
下一篇:高并发下丢失更新的解决方案
jd****
文章数
1
阅读量
407
作者其他文章
01
Kubernetes扫盲班第一期-运行Kubernetes
基于容器的微服务架构(Microservice Architecture)逐渐的成为了开发应用系统的主流,作为名门出身的Kubernetes,不仅有Google深厚的技术功底作为支撑,有领先时代的设计理念,更有各云计算巨头不遗余力的支持,学习Kubernetes对我们程序开发人员是很有必要的。本系列是我学习Kubernetes的分享,供大家作为参考。目录Kubernetes扫盲班第一期-运行Kub
jd****
文章数
1
阅读量
407
作者其他文章
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号