1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        利用阿里云免費鏡像倉庫,實現(xiàn)微服務(wù)的k8s部署

        共 6545字,需瀏覽 14分鐘

         ·

        2021-09-08 00:07


        今天的內(nèi)容給大家介紹下如何利用阿里云提供的免費私人容器鏡像服務(wù),來實現(xiàn)對個人項目容器鏡像的管理,以及通過k8s集群來發(fā)布阿里云私人容器鏡像服務(wù)中管理的服務(wù)。本文適合個人及創(chuàng)業(yè)團隊學(xué)習(xí)/使用基于容器、鏡像倉庫、k8s等云原生技術(shù)時的參考。



        創(chuàng)建阿里云個人版容器鏡像實例


        一般來說大型企業(yè)都會自己搭建內(nèi)部私有鏡像倉庫(例如Harbor),但對于小公司來說也可以直接使用云服務(wù)提供的容器鏡像服務(wù)。接下來以阿里云免費提供的個人版容器鏡像服務(wù),演示容器鏡像服務(wù)的具體使用。步驟如下:


        (1)、登錄阿里云,點擊->控制臺->找到“容器鏡像服務(wù)”,如下圖所示:



        如果入口比較難找,可以直接在阿里云搜索框搜索“容器鏡像服務(wù)”。阿里云提供收費的企業(yè)版實例,也提供限制使用的個人版實例。這里選擇個人版實例。


        (2)、創(chuàng)建成功后,設(shè)置鏡像倉庫登陸密碼。如下圖所示:



        提示:
        設(shè)置一個自己能記住的密碼,例如我這里設(shè)置的是“wudimanong”。

        (3)密碼設(shè)置成功后,點擊“創(chuàng)建鏡像倉庫”,最終效果如下圖所示:




        選擇本地倉庫,后面通過本地構(gòu)建直接將Docker鏡像推送至阿里云私有鏡像倉庫。



        之后就可以根據(jù)提示登錄該阿里云鏡像倉庫,并向其中Push鏡像了。



        配置k8s集群與鏡像倉庫的連接


        創(chuàng)建私有鏡像倉庫之后,為了安全設(shè)置了用戶名及密碼,如果k8s集群需要從鏡像倉庫拉取鏡像,則每次都需要登陸是很麻煩的,所以可以進行相關(guān)設(shè)置。


        Kubernetes 集群使用 docker-registry 類型的 Secret 來通過容器倉庫的身份驗證,進而提取私有映像。


        創(chuàng)建Secret,命名為 regcred:


        # kubectl create secret docker-registry regcred  --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=jqadmin --docker-password=wudimanong
        secret/regcred created


        提示:
        上述賬號密碼為你自己創(chuàng)建鏡像倉庫時設(shè)置的。



        打包Docker鏡像


        打包Docker鏡像需要編寫Dockerfile文件,可以參考相關(guān)資料。這里我寫了一個Java項目可以參考,通過工程構(gòu)建就能直接將Docker鏡像打包。


        項目地址(GitHub):

        https://github.com/manongwudi/springboot-k8s-demo


        下載項目后本地可以編譯構(gòu)建,完成后打包的本地鏡像如下圖所示:




        將鏡像上傳至阿里云私有鏡像倉庫


        接下來演示登錄阿里云私有鏡像倉庫,并將本地構(gòu)建的Docker容器鏡像上傳。步驟如下:


        (1)本地登陸阿里云鏡像倉庫(本地需要安裝Docker環(huán)境),命令如下:

        $ docker login --username=jqadmin registry.cn-hangzhou.aliyuncs.com
        Password: 
        Login Succeeded


        提示:
        賬號密碼為創(chuàng)建阿里云倉庫時設(shè)置的


        (2)將前面構(gòu)建的Docker鏡像上傳至阿里云私有倉庫。命令如下:

        $ docker push registry.cn-hangzhou.aliyuncs.com/wudimanong/springboot-k8s-demo:latest
        The push refers to repository [registry.cn-hangzhou.aliyuncs.com/wudimanong/springboot-k8s-demo]
        500e5779c8d2: Pushed 
        925523484e00: Pushed 
        344fb4b275b7: Pushed 
        bcf2f368fe23: Pushed 
        latest: digest: sha256:ba3930f5374ed4cfd2c39cb590c3f772c89cd73abe7bd321838fd453d11309fe size: 1159


        (3)此時回到阿里云倉庫的界面,就能看到上傳的鏡像了,如下圖所示:




        將阿里云鏡像倉庫的鏡像發(fā)布至k8s集群


        接下來演示,如何將已經(jīng)上傳阿里云私有鏡像倉庫的服務(wù)發(fā)布至k8s集群,這里需要在k8s發(fā)布文件中進行一些配置。具體如下:


        (1)創(chuàng)建發(fā)布文件。

        vim springboot-k8s-demo.yaml

        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: springboot-k8s-demo
        spec:
          selector:
            matchLabels:
              app: springboot-k8s-demo
          replicas: 1
          #設(shè)置滾動升級策略
          #Kubernetes在等待設(shè)置的時間后才開始進行升級,例如5s
          minReadySeconds: 5
          strategy:
            type: RollingUpdate
            rollingUpdate:
              #在升級過程中最多可以比原先設(shè)置多出的Pod數(shù)量
              maxSurge: 1
              #在升級過程中Deployment控制器最多可以刪除多少個舊Pod,主要用于提供緩沖時間
              maxUnavailable: 1
          template:
            metadata:
              labels:
                app: springboot-k8s-demo
            spec:
              #設(shè)置的阿里云私有鏡像倉庫登陸信息的secret(對應(yīng)2.1.2的設(shè)置)
              imagePullSecrets:
              - name: regcred

              containers:
                - name: springboot-k8s-demo
                  image: registry.cn-hangzhou.aliyuncs.com/wudimanong/springboot-k8s-demo:latest
                  env:
                    - name: SERVER_PORT
                      value: "8080"
                    - name: SPRING_PROFILES_ACTIVE
                      value: test
        ---
        apiVersion: v1
        kind: Service
        metadata:
          name: springboot-k8s-demo
          labels:
            svc: springboot-k8s-demo
        spec:
          selector:
            app: springboot-k8s-demo
          ports:
            - name: http
              #Service在集群中暴露的端口(用于Kubernetes服務(wù)間的訪問)
              port: 8080
              #Pod上的端口(與制作容器時暴露的端口一致,在微服務(wù)工程代碼中指定的端口)
              targetPort: 8080
              #K8s集群外部訪問的端口(外部機器訪問)
              nodePort: 30002
          type: NodePort


        標(biāo)紅的部分,就是設(shè)置k8s對阿里云容器鏡像倉庫的連接——使用存儲在"secret"資源中的鏡像倉庫的賬號及密碼。


        (2)執(zhí)行發(fā)布命令。

        # kubectl apply -f springboot-k8s-demo.yaml 
        deployment.apps/springboot-k8s-demo created
        service/springboot-k8s-demo created


        (3)查看并測試應(yīng)用部署是否成功

        # kubectl get po -o wide
        NAME                                   READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
        springboot-k8s-demo-7f7f8db4cc-hd8j2   1/1     Running   0          41s   10.201.17.147   k8s-node   <none>           <none>
        test-ds-nginx-qdj6n                    1/1     Running   0          80m   10.201.17.143   k8s-node   <none>           <none>


        可以看到,部署的Java應(yīng)用已經(jīng)成功啟動。接下來模擬調(diào)用下該服務(wù)的測試接口:

        # curl 10.201.17.147:8080/devops/test
        自動化發(fā)布示范工程測試接口返回->OK!


        可以成功訪問,說明應(yīng)用部署成功!



        —————END—————



        推薦閱讀

        Kubernetes集群搭建超詳細(xì)總結(jié)(CentOS版)

        干貨|如何步入Service Mesh微服務(wù)架構(gòu)時代

        實戰(zhàn)|Service Mesh微服務(wù)架構(gòu)實現(xiàn)服務(wù)間gRPC通信

        再見Nacos,我要玩Service Mesh了!

        Kubernetes微服務(wù)自動化發(fā)布系統(tǒng)

        Kubernetes微服務(wù)監(jiān)控體系

        Kubernetes學(xué)習(xí)環(huán)境難搭建?Mac筆記本上安裝一個!

        瀏覽 84
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            仙踪林777777野大粗| 日产毛片| 免费一级无码婬片A片AAA毛片| 麻豆911精一区二区| 五月天婷婷导航| 成人在线视频免费观看| 97播播| 婷久久| 熟女导航| 亚洲中文AV在线|