kubernetes基本概念 Pod : 1.最小的部署单元, 2.一组容器的集合 3.一个pod中的容器共享网络命名空间 4.生命周期是短暂的 Controllers : 1.Deployment:部署无状态应用 2.Statefulset:部署有状态应用 3.Replicaset:确保预期的Pod副本数量 4.Daemonset: 确保node运行同一个pod 5.Job:一次性任务 6.Cronjob:定时任务 更高级层次对象,部署和管理pod Service: 防止Pod失联,找到你需要Pod 定义一组Pod的负载均衡访问策略 Label :标签,附加到某个资源上,用于关联对象,查询和筛选 Namespaces :命名空间,将对象进行逻辑上隔离或者资源隔离 项目迁移到k8s平台是怎么样的流程? 基础镜像(一个空白的镜像)---------------运行环境镜像(py/php/go/java)---------------项目镜像(项目打包) 实战项目开始 1.0将java源码程序项目包导入到master服务器上,如图所示 1将db目录下数据文件导入mysql中(node01)#192.168.106.103数据库执行 source /root/tables_ly_tomcat.sql grant all on test.* to "test"@"%" identified by "Zhangfan@123"; #增加一个授权用户,在master登录能正常登录 修改连接数据库的配置文件,改成刚才数据授权的用户和ip vim src/main/resources/application.yml 2开始制作镜像java镜像(master) 我在之前的博文中讲了如何构建java镜像 https://blog.csdn.net/weixin_43546282/article/details/112210164 cat Dockerfile FROM centos:7 MAINTAINER zhangfan ENV VERSION=8.5.61 RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && yum clean all && rm -rf /var/cache/yum/* RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && tar zxf apache-tomcat-${VERSION}.tar.gz && mv apache-tomcat-${VERSION} /usr/local/tomcat && rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && mkdir /usr/local/tomcat/webapps/test && echo "ok" > /usr/local/tomcat/webapps/test/status.html && sed -i "1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"" /usr/local/tomcat/bin/catalina.sh && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENV PATH $PATH:/usr/local/tomcat/bin WORKDIR /usr/local/tomcat EXPOSE 8080 CMD ["catalina.sh", "run"] 安装编译环境 yum -y install java-1.8.0-openjdk maven cd /root/tomcat-java-demo-master vim src/main/resources/application.yml #修改配置文件指定刚才创建用户的数据库 mvn clean package -Dmaven.test.skip=true 编译完成如图所示,生成一个war包 制作新Dockerfile cat Dockerfile FROM tomcat:v1 LABEL test www.zhangsan.com RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war #注意这里命名 ` zhangfan5391621/java-demo` zhangfan5391621表示docker hub仓库登录名/java-demo为项目名 docker build -t zhangfan5391621/java-demo . 构建完成如图所示,新项目镜像构建完成 3将镜像推入docker hub仓库中 https://hub.docker.com/repository/docker/zhangfan5391621/zf_test docker push zhangfan5391621/java-demo #上传到docker hub仓库中去 4生成k8s-Pod kubectl create deployment java-demo --image=zhangfan5391621/java-demo --dry-run -o yaml > deploy.yaml 在本地生成一个yaml标准文件 cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: java-demo name: java-demo spec: replicas: 3 #三个副本 selector: matchLabels: app: java-demo template: metadata: labels: app: java-demo spec: containers: - image: zhangfan5391621/java-demo name: java-demokubectl apply -f deploy.yaml #构建pod kubectl get pods #全部状态running说明构建成功 检查pod日志,无错误说明成功,如果报错状态不对用下面命令检查 `kubectl describe nodes k8s-node01 #检查node` `kubectl logs java-demo-876cf6688-57jzf`5 暴露应用svc kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort -o yaml --dry-run > svc.yaml java-demo :刚才创建deployment时的名称, --port=80:容器内部访问端口 --target-port=8080 :指定pod内部端口 --type=NodePort: 指定外部访问的端口为随机生成端口 kubectl apply -f svc.yaml #创建svc kubectl get pods,svc http://192.168.106.102:30187/ #任意节点ip:30187都能正常访问 至此项目部署完成 整个完成顺序是 构建环境镜像----------构建项目镜像----------推送到hub仓库----------构建Pod----------暴露应用svc 后面会分享更多运维方面内容,感兴趣的朋友可以关注下! *特别声明:本文为【奋斗的小白】投稿,仅代表作者观点。马哥教育仅提供信息发布平台。 点击了解更多 ,阅读《生产级harbor可用的搭建》