大家好,我是网络管理员。我们的K8s介绍和实践,看完了三篇理论知识文章,相信你已经期待很久了(可能),所以你才私信我:“你搞理论有什么用半天?我大人写的程序怎么跑在k8s上”。别着急,今天的文章就带你从写第一行代码开始,一步步教你把程序放到K8s中运行。这次先以Go为例,再写一篇如何在K8s上运行SpringBoot应用的文章。这篇文章的重点不在于那种语言写的程序,而是先学习把它应用到K8s上的步骤,所以编程部分的演示非常简单。很想写一行代码带大家进入后面的K8s部署环节,但是需要部署我们需要先有一个环境。您在这里不需要任何云服务器,只需将其安装在您的计算机上即可。K8s本地环境是在个人电脑上安装K8s可选软件,主要有以下几种:minikube。种类。Docker桌面应用自带的K8s集群。其中,minikube和DockerDesktop都嵌入了K8s。之前我们也写过文章介绍过,但是两年过去了,我不再推荐大家安装minikube了。原因很简单。受不了他。或者使用后两者。如果想省事,Docker桌面应用自带的K8s集群完全够用。一个Go应用想要运行在K8s上如何部署一个Go开发的Web应用运行在K8s集群上,需要完成哪些步骤,这里我们先总结一下,然后依次演示每一个步骤。因为K8s是基于容器技术的分布式架构方案,首先我们需要将要部署的应用打包到容器镜像中。当然,我们必须在此之前编写应用程序代码。这里再重复一下上面理论部分的知识点。主要有几个步骤:将web程序打包成容器镜像,使用上一步打包好的镜像,创建应用Pod,使用Deployment调度应用,使用Service通过Ingress代理暴露应用,应用后完成,你一定要记住这五个步骤。下面我们一一展开,详细说说。将web程序打包成容器镜像先看下面这个简单的程序;GoHTTPServer这是一个用Go程序构建的非常简单的HTTPServer。访问“/”路径后,页面上会打印一行文字,告诉访问者他是访问的网页的主机地址。下面是打包镜像的Dockerfile。用于打包Go应用程序映像的Dockerfile。接下来,我们使用如下命令打包应用镜像:dockerbuild-tregistry.cn-hangzhou.aliyuncs.com/docker-study-lab/simple-app-go:v0.2。打包后上传,方便大家使用。dockerpushregistry.cn-hangzhou.aliyuncs.com/docker-study-lab/simple-app-go:v0.2这个镜像仓库在阿里云上。不知道是哪位好心人创造的。似乎任何人都可以上传它,不过前提是你得在阿里云上开一个镜像云账号,然后用dockerlogin命令配置自己的客户端。配置Pod和Deployment记得我在上面的文章——K8s面向对象中说过,Deployment是一个复合控制器,它包装了一个名为ReplicaSet的控制器——一个副本集。ReplicaSet管理运行的Pod数量,Deployment在其之上实现Pod滚动更新,对Pod健康状态进行健康检查,并具有回滚更新的能力。所以,这里我们直接把步骤2和步骤3结合起来。其实没什么好说的,直接上--Deployment的YAML配置Deployment对象声明文件拿到这个配置后,直接使用kubectl-fxxx.yaml命令将Deployment提交到K8s集群,让它帮我们创造它。部署,像ReplicaSet和Pod这样的对象就可以了。这里我们只是使用了Deployment最基本的功能,想要了解更多的高级功能比如滚动更新配置、健康检查等。使用Service暴露服务创建上述对象后,我们的应用程序只能在K8s集群内部使用。如果我们想从外部访问它,我们必须暴露应用程序。这时候,我们就需要Service对象了。关于Service对象的具体概念解释,我们看之前的文章,这里不再赘述。下面是一个NodePort类型的Service,它把我们的服务暴露在30088端口。Service对象声明了我们的服务可以在电脑上通过127.0.0.1:30088访问。使用Ingress代理服务NodePort类型Service对象的缺点在上一篇文章中已经提到,所以在实际操作中,我们可以去掉上面例子中的type字段,创建一个默认的只能在集群中使用的ClusterIp类型的Service对象,再使用Ingress代理Service完成服务的对外暴露,更加优雅易管理。在使用Ingress之前,需要先安装IngressController。这里我们使用开源的Ingress-Nginx安装来引用这个,很简单:https://kubernetes.github.io/ingress-nginx/deploy/然后为我们的GoWeb应用Ingress对象声明代理。IngressYAML通过kubctlapply-f命令提交到K8s集群创建Ingress对象。创建Ingress对象后,我们可以通过app.example.com访问我们的服务。当然前提是在电脑上配置好我们的hosts文件,把这个域名绑定到127.0.0.1上。小结这里总结一下K8s常用的入门知识和相关实战操作。只能算是很初级的介绍。还有许多其他非常高级的功能可以让我们控制K8s对应用程序的各种调度动作。
