1使用kind构建单层架构Node/Express网络应用Kubernetesinaction-从零开始构建微服务Preface准备写一个Kubernetes动作系列教程,毕竟cnblogs作为国内最早的技术博客,现在已经开始迁移到Kubernetes了,应该为这里的博客园鼓掌。系列会更偏向于实战,理论只会在需要的时候进行讲解。在Dockerhub上,个人感觉有两个奇葩的镜像:imagedind,dockerkind中的docker,docker中的kubernetes/k8s中的docker。很多人都是从minikube开始学习k8s的,但是,但是,但是,当你比较kind和使用minikube的时候,你会发现kind至少快三倍(在我的旧mac上)。1准备提前安装dockerkubernetes-cli,安装kindmacbrewinstallkindlinuxcurl-Lo./kindhttps://kind.sigs.k8s.io/dl/v0.8.1/kind-$(uname)-amd64chmod+x./kindmv./kind/some-dir-in-your-PATH/kindwindows参考kind官方指南并尝试运行kind--version以确保正确安装kind。2创建第一个集群大约需要2~3分钟。kindcreatecluster会创建一个名为kind-kindkubectlcluster-info的集群来了解集群的状态。Kubernetesmasterisrunningathttps://127.0.0.1:51842KubeDNSisrunningathttps://127.0.0.1:51842/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy进一步调试诊断集群问题,使用“kubectlcluster-infodump”。其中的链接是您的如果k8s控制平面运行dockerps,则至少会运行一个kind-control-plane容器。可以再次尝试以下命令:kindgetclusters获取所有集群kubectlconfigget-contextskubectlgetnodes-owidekubectlgetsvc至此,在本地docker环境中搭建了一个单节点的k8s集群。?3发布一个node/expressapp创建以下文件并保存。Dcoker和Appinde.jsconstexpress=require('express')constapp=express()constport=3000app.get('/',(req,res)=>res.send('HelloWorld!runningonkubernetes'))app.listen(port,()=>console.log(`Exampleapplisteningathttp://localhost:${port}`))package.json,package-lock.json对于整个项目文件,请访问githubrepoDockerfileFROMnode:14.2.0-alpineEXPOSE3000WORKDIR/anodeADDpackage.json.ADDpackage-lock.json.RUNnpmciADD。.CMD["node","index.js"]将图像上传到dockerhub(可选)克隆所有需要的代码和配置文件。在推送图像之前,不要忘记docker登录。dockerbuild-t{yourdockerhubname}/a-node:v1.dockerpush{yourdockerhubname}/a-node:v1deployment,服务配置deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:a-node-deploymentlabels:app:nodespec:replicas:1选择器:matchLabels:app:a-nodetemplate:metadata:labels:app:a-nodespec:containers:-name:a-node-containerimage:tim010/a-node:v1#或您自己的图像端口:-containerPort:3000service.yamlapiVersion:v1kind:Servicemetadata:name:a-node-servicespec:ports:-targetPort:3000protocol:TCPport:80selector:app:a-node-servicetype:NodePortreleasekubectlapply-fdeployment.yamldeployment.apps/a-node-deploymentcreatedkubectlapply-fservice.yamlservice/a-node-servicecreated确保发布成功,运行kubectlgetpods应该输出如图的结果,don'忘记复制您的广告连播名称。kubectlgetserviceNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEa-node-serviceNodePort10.111.52.71
