流程
项目迁移到k8s平台是怎么样的流程?
实战项目
制作java镜像
//项目结构
yum -y install maven git
[root@master java]# pwd
/root/java
[root@master java]# git clone https://gitee.com/forgotten/tomcat-java-demo.git
正克隆到 'tomcat-java-demo'...
remote: Enumerating objects: 558, done.
remote: Total 558 (delta 0), reused 0 (delta 0), pack-reused 558
接收对象中: 100% (558/558), 5.08 MiB | 1.98 MiB/s, 完成.
处理 delta 中: 100% (217/217), 完成.
[root@master java]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
--2021-12-28 02:30:46-- https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
正在解析主机 archive.apache.org (archive.apache.org)... 138.201.131.134, 2a01:4f8:172:2ec5::2
正在连接 archive.apache.org (archive.apache.org)|138.201.131.134|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:11576317 (11M) [application/x-gzip]
正在保存至: “apache-tomcat-9.0.54.tar.gz”
apache-tomcat-9.0.54.tar 100%[================================>] 11.04M 3.26MB/s 用时 3.4s
2021-12-28 02:30:51 (3.26 MB/s) - 已保存 “apache-tomcat-9.0.54.tar.gz” [11576317/11576317])
[root@master java]# ls
apache-tomcat-9.0.54.tar.gz Dockerfile tomcat-java-demo
[root@master java]# cd tomcat-java-demo/
[root@master tomcat-java-demo]# ls
db deploy.yaml Dockerfile jenkinsfile LICENSE pom.xml README.md src
[root@master tomcat-java-demo]# pwd
/root/java/tomcat-java-demo
[root@master tomcat-java-demo]# mvn clean package
[root@master tomcat-java-demo]# mv target/ly-simple-tomcat-0.0.1-SNAPSHOT.war target/myapp.war
[root@master java]# cat Dockerfile
FROM centos
ADD apache-tomcat-9.0.54.tar.gz /usr/local
ADD tomcat-java-demo/target/myapp.war /usr/local/apache-tomcat-9.0.54/webapps/myapp.war
RUN yum -y install java-11-openjdk*
EXPOSE 8080
WORKDIR /usr/local/apache-tomcat-9.0.54
ENTRYPOINT /usr/local/apache-tomcat-9.0.54/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.54/logs/catalina.out
CMD ["/usr/local/apache-tomcat-9.0.54/bin/catalina.sh","start"]
//构建镜像
[root@master ~]# docker build -t jiejiehao/java-deamon:v2 /root/java
[root@master java]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jiejiehao/java-deamon v2 231762e9e54a 49 seconds ago 1.49GB
将镜像推入docker hub仓库中
[root@master ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: jiejiehao
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@master ~]# docker push jiejiehao/java-deamon:v2
创建Deployment,Service的yaml文件
[root@master test]# cat java.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: java-deamon
name: java
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: java-deamon
template:
metadata:
labels:
app: java-deamon
spec:
containers:
- image: jiejiehao/java-deamon:v2
name: java
imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
labels:
app: java-deamon
name: java
namespace: default
spec:
ports:
- port: 80
protocol: TCP
nodePort: 30000
targetPort: 8080
selector:
app: java-deamon
type: NodePort
[root@master test]# kubectl apply -f java.yaml
deployment.apps/java created
service/java created
[root@master ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/java-7b875cdd46-4qdrt 1/1 Running 0 29m
pod/java-7b875cdd46-l2jrj 1/1 Running 0 29m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/java NodePort 10.97.3.47 <none> 80:31111/TCP 29m
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d