jenkins结合k8s部署

  1. jenkins配置部署,从git或者svn等拉取代码,编制打包,在博客的jenkins那块有具体的讲解

  2. 将打好的包war/java包拷贝到k8s-Master,或者在jenkins上也行,我这里测试为了方便直接在k8s上面执行

  3. 在k8s-node和k8s-master上配置好私有仓库镜像拉取
    vim /usr/lib/systemd/system/docker.service
    #ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    ExecStart=/usr/bin/dockerd --insecure-registry 192.168.0.105
    systemctl daemon-reload && systemctl restart docker

  4. 在k8s-master编写Dockerfile,jenkins执行的脚本及yaml文件
    mkdir /root/tomcat
    vim Dockerfile
    FROM tomcat #基础镜像

    MAINTAINER Mlxg #作者

    RUN mkdir /usr/local/tomcat/webapps/test #创建容器test目录

    ADD test.txt /usr/local/tomcat/webapps/test #test.txt放到test目录
       #jar/war包直接ADD到webapps下启动tomcat即可
    ADD server.xml /usr/local/tomcat/conf #替换容器server.xml

    EXPOSE 18080 #容器tomcat端口

    ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh",“run”] #启动tomcat

    jenkins脚本
    #!/bin/bash
    docker build -t tomcat:v1.0 . #生成镜像
    docker tag tomcat:v1.0 192.168.0.105/test/tomcat:v1.0 #打tag
    docker login --username=admin --password=‘admin’ 192.168.0.105 #登录私有仓库
    docker push 192.168.0.105/test/tomcat:v1.0 #上传镜像

  5. 配置无需手动登录docker私有仓库
    docker login 192.168.0.105输入用户及密码
    登录之后在~/.docker/config.json文件
    再对上面的config.json进行base64加密,命令如下:
    cat ~/.docker/config.json |base64 -w 0
    创建secret.yaml文件,文件内容如下:
    apiVersion: v1
    kind: Secret
    metadata:
    name: mysecret
    data:
    .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodWIueXh0Yy5jb206ODA4MSI6IHsKCQkJImF1dGgiOiAiWTNJM09saDFNVEl6TkRVMk1qVT0iCgkJfQoJfQp9Cg== #base64加密密码
    type: kubernetes.io/dockerconfigjson

    创建secret,命令如下:
    kubectl create -f secret.yaml,生成secret
    我试了一下无法拉取,还没未找到问题,可能是我之前搞错了之后,生成了一个错误的
    手动创建一个secret,使用 secret 来指定 pull 权限
    kubectl create secret docker-registry registry-harbor
    –namespace=default --docker-server=192.168.0.105
    –docker-username=admin --docker-password=‘admin’
    kubectl get secrets

  6. 编写yaml文件及svc文件
    test-rc.yaml
    apiVersion: v1
    kind: ReplicationController
    metadata:
    name: test
    spec:
    replicas: 2
    selector:
    app: test
    template:
    metadata:
    labels:
    app: test
    spec:
    containers:

    • name: test
      image: 192.168.0.105/test/tomcat:v1.0 #私有仓库镜像
      ports:
      • containerPort: 18080
        imagePullSecrets:
    • name: registry-harbor #创建secret定义的仓库名称

test-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: test
spec:
type: NodePort
ports:
- port: 18080  #容器暴露端口
nodePort: 31002 #映射node服务器提供外部访问端口
selector:
app: test
8. 执行部署web及services
kubectl create -f test-rc.yaml
kubectl get pods #可查看pod进度
kubectl describe pod test-s5c48 #查看pod信息及报错
kubectl delete -f test-rc.yaml #删除pods

kubectl create -f test-svc.yaml
kubectl get svc
kubectl delete -f test-svc.yaml<br>   docker ps | grep tomcat    #在node上查看容器是否正常运行

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
9. jenkins配置
配置源码及执行的shell
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
10. k8s上编写Docfile,build,yanl文件
在jenkins上ADD zip/jar包是报错没有这个文件,暂未找到什么问题
此处scp到k8s-master上执行打包镜像上传私有仓库
vim Dockerfile
FROM docker.io/centos

MAINTAINER Mlxg

RUN yum install -y unzip

RUN mkdir /opt/server

ADD letouactivity-provider-1.0.0-SNAPSHOT-bin.zip /opt/server

RUN unzip /opt/server/letouactivity-provider-1.0.0-SNAPSHOT-bin.zip -d /opt/server

EXPOSE 28080

ENTRYPOINT ["/opt/server/bin/start.sh",“run”]

vim letou.sh #tag可通过变量获取,为了测试方便
#!/bin/bash
docker build -t letou:v1.0 .
docker tag letou:v1.0 192.168.0.105/test/letou:v1.0
docker login --username=Mlxg --password=‘Mlxg2234’ 192.168.0.105
docker push 192.168.0.105/test/letou:v1.0

vim letou-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: letou
spec:
replicas: 2
selector:
app: letou
template:
metadata:
labels:
app: letou
spec:
containers:
- name: letou
image: 192.168.0.105/test/letou:v1.0
ports:
- containerPort: 28080
imagePullSecrets:
- name: registry-harbor

vim letou-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: letou
spec:
type: NodePort
ports:
- port: 28080
nodePort: 30332
selector:
app: letou
在这里插入图片描述
11. 在k8s-master执行查看是否部署成功
因为我们的代码需要连接duboo,zk,apollo(可部署在宿主机),此时node上的容器其实访问不了
只要能成功查看letou pod就发布成功了
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值