流程
项目迁移到k8s平台是怎么样的流程?
实战项目
制作java镜像
[root@master ~]# git clone https://gitee.com/hadeian/tomcat-java-demo-master.git
正克隆到 'tomcat-java-demo-master'...
remote: Enumerating objects: 182, done.
remote: Counting objects: 100% (182/182), done.
remote: Compressing objects: 100% (165/165), done.
remote: Total 182 (delta 6), reused 178 (delta 4), pack-reused 0
接收对象中: 100% (182/182), 1.12 MiB | 338.00 KiB/s, 完成.
处理 delta 中: 100% (6/6), 完成.
[root@master ~]# ls
anaconda-ks.cfg tomcat-java-demo-master
[root@master ~]# mv tomcat-java-demo-master tomcat-java-deamon
[root@master ~]# yum -y install java-1.8.0-openjdk maven
[root@master ~]# vim /etc/maven/settings.xml
#默认是官方源,换阿里云的源vim /etc/maven/settings.xml(159-164行)
<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
[root@master tomcat-java-deamon]# mvn clean install package '-Dmaven.test.skip=true'
......
[INFO] Processing war project
[INFO] Webapp assembled in [73 msecs]
[INFO] Building war: /root/test/tomcat-java-deamon/target/ly-simple-tomcat-0.0.1-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS #出现这个表示成功
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:43 min
[INFO] Finished at: 2021-12-28T11:59:08+08:00
[INFO] ------------------------------------------------------------------------
.......
[root@master tomcat-java-deamon]# ls
db Dockerfile LICENSE pom.xml README.md src target
[root@master tomcat-java-deamon]# mv target/*.war target/ROOT.war
[root@node2 test]# cat Dockerfile
FROM centos
LABEL maintainer haoran
ADD tomcat-java-deamon/target/ROOT.war /usr/local/apache-tomcat-9.0.54/webapps/ROOT.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@node2 test]# docker build -t 1314444/java-deamon:v1 .
将镜像推入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: 1314444
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 1314444/java-deamon:v1
The push refers to repository [docker.io/1314444/java-deamon]
cd69f6f5c474: Preparing
e0d546489ea5: Preparing
74ddd0ec08fa: Preparing
denied: requested access to the resource is denied
创建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: 1314444/java-deamon:v1
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 test]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/java-595bf5b979-hw2mw 1/1 Running 0 19s
pod/java-595bf5b979-mcdpq 1/1 Running 0 19s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/java NodePort 10.108.60.223 <none> 80:30000/TCP 19s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d
[root@master test]# curl 10.108.60.223
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>把美女带回家应用案例</title>
<meta name="description" content="把美女带回家应用案例">
<meta name="keywords" content="index">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,
......略
浏览器访问
http://nodeip:nodeport #nodeip值得是任意k8s节点的ip;nodeport值得是k8s分配给svc的随机端口号