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上查看容器是否正常運行

  

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就發布成功了

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM