当前位置: 首页 > news >正文

织梦网站模板官网南京建设网站制作

织梦网站模板官网,南京建设网站制作,wordpress 模板 导航栏,短视频排名seo将项目迁移到k8s平台是怎样实现的?制作镜像控制器管理PodPod数据持久化暴露应用对外发布应用日志/监控1、制作镜像分为三步第一基础镜像#xff0c;是基于哪个操作系统#xff0c;比如Centos7或者其他的第二步中间件镜像#xff0c;比如服务镜像#xff0c;跑的像nginx服务…将项目迁移到k8s平台是怎样实现的?制作镜像控制器管理PodPod数据持久化暴露应用对外发布应用日志/监控1、制作镜像分为三步第一基础镜像是基于哪个操作系统比如Centos7或者其他的第二步中间件镜像比如服务镜像跑的像nginx服务tomcat服务第三步项目镜像它是服务镜像之上的将你的项目打包进去那么这个项目就能在你这个服务镜像里面运行了一般运维人员都是提前将镜像做好而开发人员就能直接拿这个镜像去用这个镜像一定要符合现在环境部署的环境。2、控制器管理 pod也就是k8s去部署这个镜像了一般我们都会去拿控制器去部署用的最多的就是 deploymentDeployment无状态部署StatefulSet有状态部署DaemonSet守护进程部署Job CronJob批处理无状态和有状态的有什么区别有状态的是有身份的比如网络ID、存储、这个两个是提前规划好的有序启动/停止持久化与非持久化3、Pod 数据持久化pod数据持久化主要是因对一个应用程序说的比如开发一个项目这个项目有没有落地到本地文件如果有落的话就保证他持久的有了那就必须要用到pod数据的持久化了。容器部署过程中一般有以下三种数据启动时需要的初始数据可以是配置文件启动过程中产生的临时数据该临时数据需要多个容器间共享启动过程中产生的持久化数据4、暴露应用在 k8s中部署一个deployment它是无法对外进行访问的即其他应用程序要想访问部署的deployment它找不到该怎么去访问。为什么去这么讲因为deployment一般都是多副本的去部署有可能会分布在不同的节点之上而且重建 pod ip也会变重新发布一下也会变了所以没有办法去固定去访问哪个pod即使固定了其他的pod也访问不了。要想做到多个 pod 都去提供服务的话前面有必须要加一个负载均衡提供一个访问入口只有访问这个统一入口才能转发到后端多个pod上只要访问这个Cluster IP就能转发到后端的pod上。ServiceService 定义了 Pod 的逻辑集合和访问这个集合的策略Service 引入为了解决Pod的动态变化提供服务发现和负载均衡使用 CoreDNS 解析 Service 名称5、对外发布应用暴露出去之后呢也就是需要让用户去访问比如搭建一个电商网站让用户去访问ingress相对于service它是一个互补的状态弥补了各自service主要提供了集群内部的访问也可以暴露一个TCP/UDP的端口而ingress主要是一个7层的转发也就是提供一个统一的入口只要访问ingress controller它就能帮你转发你部署所有的项目也就是所有的项目都使用域名去访问。首先开发者将代码部署到你的代码仓库中主流的用的Git或者gitlab提交完代码通过CI/CD平台需要对代码进行拉取、编译、构建产生一个War包然后交给Ansible然后发送到云主机上/物理机,然后通过负载均衡将项目暴露出去然后会有数据库监控系统日志系统来提供相关的服务。首先也是开发将代码放在代码仓库然后通过jenkins去完成拉取代码编译上传到我们的镜像仓库。这里是将代码打包成一个镜像而不是可以执行的war或者jar包这个镜像包含了你的项目的运行环境和项目代码这个镜像可以放在任何docker上去run起来都可以去访问首先得保证能够在docker上去部署起来再部署到k8s上打出来的镜像去放在镜像仓库中来集中的去管理这些镜像。因为每天会产生几十个或者上百个镜像必须通过镜像仓库去管理这里可能会去写一个脚本去连接k8smaster而k8s会根据自己的部署去调度这些pod,然后通过ingress去发布我们的应用让用户去访问每个ingress会关联一组pod而service会创建这组pod的负载均衡通过service去区分这些节点上的Pod。然后数据库是放在集群之外监控系统日志系统也可以放在k8s集群放在去部署也可以放在之外我们是放在k8s集群内的也不是特别敏感主要用来运维和开发调试用的不会影响到我们的业务所以我们优先去k8s中去部署。现在以部署一个JAVA项目到我们的k8s中一、安装一个openjdk[rootk8s-master ~]# yum -y install java-1.8.0-openjdk.x86_64 maven [rootk8s-master ~]# java -version openjdk version 1.8.0_222 OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)然后我们将代码拉到本地一般Dockerfile中跟我们的代码都放在同一目录下[rootk8s-master tomcat-java-demo-master]# ls db Dockerfile LICENSE pom.xml README.md src [rootk8s-master tomcat-java-demo-master]# vim Dockerfile FROM lizhenliang/tomcat LABEL maintainer zhaochengcheng RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war二、进行编译这里我们需要配置maven的国内源这样的话就比较快一点[rootk8s-master CI]# vim /etc/maven/settings.xml mirror idcentral/id mirrorOfcentral/mirrorOf namealiyun maven/name urlhttps://maven.aliyun.com/repository/public/url /mirror /mirrors [rootk8s-master tomcat-java-demo-master]# mvn clean package -D maven test.skiptrue [rootk8s-master tomcat-java-demo-master]# ls db Dockerfile LICENSE pom.xml README.md src target [rootk8s-master tomcat-java-demo-master]# cd target/ [rootk8s-master target]# ls classes generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-archiver maven-status [rootk8s-master tomcat-java-demo-master]# cd target/我们就使用这个编译好的war包,然后打成镜像上传到我们的Harbor仓库里[rootk8s-master target]# ls classes ly-simple-tomcat-0.0.1-SNAPSHOT maven-archivergenerated-sources ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-status[rootk8s-master tomcat-java-demo-master]# docker build -t 192.168.30.24/library/java-demo:latest .三、上传到镜像仓库[rootk8s-master tomcat-java-demo-master]# docker login 192.168.30.24 Username: admin Password: Error response from daemon: Get https://192.168.30.24/v2/: dial tcp 192.168.30.24:443: connect: connection refused这里报错其实我们需要在每台docker下都要写入对harbor仓库的信任才可以后面上传镜像也会用[rootk8s-master java-demo]# vim /etc/docker/daemon.json { registry-mirrors:[http://f1361db2.m.daocloud.io], insecure-registries: [192.168.30.24]}再等录一下push就可以了[rootk8s-master tomcat-java-demo-master]# docker push 192.168.30.24/library/java-demo:latest四、控制器管理pod编写deployment,一般项目都写到自定义的命名空间下名称写项目名称方便记忆name: tomcat-java-demonamespace: test另外就是下一个项目名称这里分为多个一般有很多的组件组成所以下面可以写个app的名称比如组件1、2、3起码标签有这两个维度project: wwwapp: java-demo另外就是镜像拉取在哪个仓库去下载这里我建议镜像仓库的项目名称和我们定义的是一种避免混了。我重新打个标签并传到我们的私有镜像仓库中[rootk8s-master java-demo]# docker tag 192.168.30.24/library/java-demo 192.168.30.24/tomcat-java-demo/java-demo[rootk8s-master java-demo]# docker push 192.168.30.24/tomcat-java-demo/java-demo:latest镜像地址也改一下地址imagePullSecrets: - name: registry-pull-secret containers: - name: tomcat image: 192.168.30.24/tomcat-java-demo/java-demo:latest现在开始创建 yaml创建项目的命名空间[rootk8s-master java-demo]# vim namespace.yaml apiVersion: v1 kind: Namespace metadata: name: test [rootk8s-master java-demo]# kubectl create -f namespace.yaml namespace/test created [rootk8s-master java-demo]# kubectl get ns NAME STATUS AGE default Active 22h kube-node-lease Active 22h kube-public Active 22h kube-system Active 22h test Active 5s创建一个secret来保证我们harbor镜像仓库的认证信息这里一定要写上我们的项目的命名空间。[rootk8s-master java-demo]# kubectl create secret docker-registry registry-pull-secret --docker-usernameadmin --docker-passwordHarbor12345 --docker-email111qq.com --docker-server192.168.30.24 -n test secret/registry-pull-secret created [rootk8s-master java-demo]# kubectl get ns NAME STATUS AGE default Active 23h kube-node-lease Active 23h kube-public Active 23h kube-system Active 23h test Active 6m39s [rootk8s-master java-demo]# kubectl get secret NAME TYPE DATA AGE default-token-2vtgm kubernetes.io/service-account-token 3 23h registry-pull-secret kubernetes.io/dockerconfigjson 1 46s [rootk8s-master java-demo]# vim deployment.yaml apiVersion: apps/v1beta1 kind: Deployment metadata: name: tomcat-java-demo namespace: test spec: replicas: 3 selector: matchLabels: project: www app: java-demo template: metadata: labels: project: www app: java-demo spec: imagePullSecrets: - name: registry-pull-secret containers: - name: tomcat image: 192.168.30.24/tomcat-java-demo/java-demo:latest imagePullPolicy: Always ports: - containerPort: 8080 name: web protocol: TCP resources: requests: cpu: 0.5 memory: 1Gi limits: cpu: 1 memory: 2Gi livenessProbe: httpGet: path: / port: 8080 initialDelaySeconds: 60 timeoutSeconds: 20 readinessProbe: httpGet: path: / port: 8080 initialDelaySeconds: 60 timeoutSeconds: 20 [rootk8s-master java-demo]# kubectl get pod -n test NAME READY STATUS RESTARTS AGE tomcat-java-demo-6d798c6996-fjjvk 1/1 Running 0 2m58s tomcat-java-demo-6d798c6996-lbklf 1/1 Running 0 2m58s tomcat-java-demo-6d798c6996-strth 1/1 Running 0 2m58s另外就是暴露一个Service,这里的标签也要保持一致不然他找不到相应的标签就提供不了服务这里我们是使用ingress来访问发布应该直接使用ClusterIP就可以[rootk8s-master java-demo]# vim service.yaml apiVersion: v1 kind: Service metadata: name: tomcat-java-demo namespace: test spec: selector: project: www app: java-demo ports: - name: web port: 80 targetPort: 8080 [rootk8s-master java-demo]# kubectl get pod,svc -n test NAME READY STATUS RESTARTS AGE pod/tomcat-java-demo-6d798c6996-fjjvk 1/1 Running 0 37m pod/tomcat-java-demo-6d798c6996-lbklf 1/1 Running 0 37m pod/tomcat-java-demo-6d798c6996-strth 1/1 Running 0 37m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/tomcat-java-demo ClusterIP 10.1.175.191 none 80/TCP 19s测试访问我们的项目是可以的现在要发布出去通过ingress测试访问我们的项目是可以的现在要发布出去通过ingress[rootk8s-master java-demo]# curl 10.1.175.191 !DOCTYPE html html head langen meta charsetutf-8 meta http-equivX-UA-Compatible contentIEedge title把美女带回家应用案例/title meta namedescription content把美女带回家应用案例 meta namekeywords contentindex现在部署一个ingress-nginx的控制器这个网上都可以找到官方也有我这里是按DaemonSet的方式去部署的所以每个节点都会跑一个控制器。[rootk8s-master java-demo]# kubectl get pod -n ingress-nginx NAME READY STATUS RESTARTS AGE nginx-ingress-controller-g95pp 1/1 Running 0 3m6s nginx-ingress-controller-wq6l6 1/1 Running 0 3m6s发布应用这里注意两点第一个就是网站域名一个是service的命名空间。[rootk8s-master java-demo]# kubectl get pod,svc -n test NAME READY STATUS RESTARTS AGE pod/tomcat-java-demo-6d798c6996-fjjvk 1/1 Running 0 53m pod/tomcat-java-demo-6d798c6996-lbklf 1/1 Running 0 53m pod/tomcat-java-demo-6d798c6996-strth 1/1 Running 0 53m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/tomcat-java-demo ClusterIP 10.1.175.191 none 80/TCP 16m [rootk8s-master java-demo]# vim service.yaml [rootk8s-master java-demo]# kubectl create -f ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: tomcat-java-demo namespace: test spec: rules: - host: java.maidikebi.com http: paths: - path: / backend: serviceName: tomcat-java-demo servicePort: 80另外我这边是测试的所以绑定我本地的hosts来进行访问在hosts文件里面加入域名和和节点ip就能访问到我们的项目了。来源Kubernetes运维之部署主流JAVA应用升职加薪必备运维工程师打怪升级进阶成神之路我没有开挂的人生自律和坚持是我走IT之路的唯一捷径全网最新、最全Linux面试题2020版史上最全、最新的Redis面试题2020最新版赞7000 字学习笔记MySQL 从入门到放弃如有错误或其它问题欢迎小伙伴留言评论、指正。如有帮助欢迎点赞转发分享。更多相关开源技术文章请持续关注民工哥知乎技术专栏。我是民工哥一个爱折腾的IT技术老司机欢迎关注我我们一起学习共同成长
http://www.huolong8.cn/news/64820/

相关文章:

  • 建设银行的网站广告制作费和广告服务费区别
  • 湖北网站推广方案装修设计师在哪里找
  • 睢县网站制作公司福州 网站建设 医疗
  • 网站营销网站优化moodle做网站
  • 公司网站开发软件济南抖音推广公司
  • 网站内容授权书网站开发修改端口
  • 东莞设计网站建设方案百度 网站 移动端
  • 北京哪个网站制作公司广州企业网站建站公司哪家好
  • 免费推广网站下载wordpress 数据库合并
  • 广告做图网站做网站架构
  • 玩具网站建设策划书安全员资格证书查询网
  • 建设银行信用卡申请官方网站手机网页传奇
  • 关于建设门户网站的通知东莞搜索优化
  • 广西茶叶网站建设建设网站工作报告
  • 昌江县住房和城乡建设局网站类似58同城网站建设多少钱
  • 常州免费企业网站建设网站快速设计
  • 苏州网站建设数据网络网站首选域301如何做
  • 中国建设银行网站用户注册wordpress 获取相册图片
  • 代理网站建设虚拟主机免费空间
  • 网站设计说明书摘要服务器网站搭建教程
  • 提升自己建设自己的网站素材网站 源码
  • win7+网站建设扬州自适应网站建设
  • 汝州文明建设网站wordpress的结构
  • 网站推广营销方案益阳网站制作公司
  • 如何做网站分析设置wordpress首页显示文章摘要
  • 免费建一个自己的网站y3微信管理系统
  • 在线做logo印章网站怎么看网站蜘蛛
  • 在线流程图网站怎么做商城网站开发报
  • 公司做网站建设做网站用什么浏览器最好
  • 大连三丰建设集团公司网站河北工商注册网入口