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
   docker ps | grep tomcat #在node上查看容器是否正常运行

  

  

  

猜你喜欢

转载自www.cnblogs.com/The-day-of-the-wind/p/11972569.html