乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Kubernetes 1.19 國內(nèi)鏡像源部署,部署前后端服務,以及 Gitlab的helm部署

       黃爸爸好 2021-09-23

      本篇博客將詳細介紹如何在云服務器上搭建 Kubernetes 1.19 集群,以及在我們部署好的集群上使用 Helm 部署 gitlabminio 服務。

      部署環(huán)境

      • 兩臺云服務器

        • 配置為:

          • 4 核 8GB 內(nèi)存
          • 2 核 4GB 內(nèi)存
        • 操作系統(tǒng):ubuntu 18.04

      目錄

      • 搭建 Kubernetes 1.19 集群
      • 使用 helm 部署 gitlab 與 minio

      1. 搭建 Kubernetes 1.19 集群

      我的master節(jié)點設定為4核8gb的機器,這里稱其為master,另一臺機稱為worker。

      Step 1: 進入root用戶的身份(master)

      su

      輸入root的密碼即可。

      Step 2: 安裝docker(master和worker都要操作)

      關于 docker 的安裝建議參考官方文檔. 這里給出快速安裝的腳本:

      curl -fsSL https://get. | sudo sh -s -- --mirror Aliyun
      sudo usermod -aG docker $USER
      sudo mkdir -p /etc/docker
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
       "exec-opts": ["native.cgroupdriver=systemd"],
       "log-driver": "json-file",
       "log-opts": {
       "max-size": "100m"
       },
       "storage-driver": "overlay2",
       "registry-mirrors": ["https://t9ab0rkd.mirror."]
      }
      EOF
      sudo systemctl daemon-reload
      sudo systemctl restart docker

      Step3: 安裝 Kubernetes 三件套: kubelet kubeadm kubectl(僅在master)

      # 添加并信任APT證書
      curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
      
      # 添加源地址
      add-apt-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
      
      # 更新源并安裝最新版 kubenetes
      sudo apt update && apt install -y kubelet kubeadm kubectl
      
      # 添加 completion,最好放入 .bashrc 中
      source <(kubectl completion bash)
      source <(kubeadm completion bash)

      Step4: 關閉 swap(master和worker都要操作)

      這里由于騰訊云主機是默認關閉 swap 的,如果是其他主機,則執(zhí)行以下操作并重啟機器:

      $ vim /etc/fstab
      // 注釋掉帶有swap的一行
      # UUID=xxxxxxxxx none            swap    sw              0       0

      Step5: 啟動 master(僅在master操作)

      kubeadm init --image-repository='registry.cn-hangzhou./google_containers'

      這里指定了鏡像源為阿里云,所以能夠避免從 k8s.gcr.io 這個官方默認源拉取時失敗。執(zhí)行成功之后,會生成一串類似于如下格式的信息:

      kubeadm join 172.16.0.15:6443 --token qi9srp.7sudphpyhmkm8sw6     --discovery-token-ca-cert-hash sha256:a30870d86f7d19aff4d57a2dd64d58736012dfa3b3d5b53c0e45413ba8f039bf 

      這串信息稍后會在加入worker節(jié)點的時候用到。

      Step6: 配置讀取路徑(僅在master操作)

      export KUBECONFIG=/etc/kubernetes/admin.conf
      

      Step7:安裝網(wǎng)絡插件(僅在master操作)

      kubectl apply -f "https://cloud.s/k8s/net?k8s-version=$(kubectl version | base64 | tr -d 'n')" 

      Step8:將 worker 節(jié)點加入到集群(僅在worker 操作)

      如果有保存在master節(jié)點執(zhí)行 kubeadm init 生成的信息,即:

      kubeadm join 172.16.0.15:6443 --token qi9srp.7sudphpyhmkm8sw6     --discovery-token-ca-cert-hash sha256:a30870d86f7d19aff4d57a2dd64d58736012dfa3b3d5b53c0e45413ba8f039bf 

      可以直接復制過來使用. 沒有保存的話,--token 可以通過 kubeadm token list 獲取;--discovery-tolen-ca-cert-hash 可以通過下面的命令獲取:

      openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | sha256sum | awk '{print $1}'

      Step9: 驗證執(zhí)行結(jié)果

      2. 通過 yaml 文件部署前后端應用

      由于服務計算的第九次作業(yè)開發(fā)了一個前后端分離的應用程序,并打包成了 docker 鏡像,所以正好可以利用搭建好的集群部署前后端應用。查閱了 Kubernetes 官方文檔后,我決定分別為前后端服務配置一個 Deployment 類型的資源和 Service 類型的資源。Deployment 類型資源負責管理 pod 的生命周期,調(diào)整動態(tài)伸縮的尺度,Service 負責暴露 Deployment 所對應的容器的端口到公網(wǎng),使得服務可以在集群外部被訪問。
      下面介紹 yaml 文件的寫法。

      bbs_backend 的部署

      Deployment
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: bbs-backend
      spec:
        selector:
          matchLabels:
            app: bbs-backend
            tier: backend
            track: stable
        replicas: 3       # 副本數(shù)
        template:
          metadata:
            labels:
              app: bbs-backend
              tier: backend
              track: stable
          spec:
            containers:
              - name: bbs-backend
                image: "docker.io/bobbai/bbs_backend"  # 這里pod要拉取的鏡像 
                ports:
                  - name: port
                    containerPort: 5000   # 這里指定了基于鏡像創(chuàng)建容器之后服務所在的端口
      
      Service
      apiVersion: v1
      kind: Service
      metadata:
        name: bbs-backend-service
      spec:
        selector:
          app: bbs_backend
          tier: backend
        ports:
        - protocol: "TCP"        # 服務提供的協(xié)議
          port: 5000             # service暴露在cluster ip上的端口,<cluster ip>:port 是提供給集群內(nèi)部客戶訪問service的入口。
          targetPort: 5000       # targetPort是pod上的端口,從port和nodePort上到來的數(shù)據(jù)最終經(jīng)過kube-proxy流入到后端pod的targetPort上進入容器
          nodePort: 30086        # 暴露在公網(wǎng)的端口,服務可以通過 <master ip>:nodePort 訪問
        type: NodePort

      bbs_frontend 的部署

      這里yaml文件與后端部署所用到的類似,不再重復,直接上文件:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: bbs-frontend
      spec:
        selector:
          matchLabels:
            app: bbs-frontend
            tier: frontend
            track: stable
        replicas: 3
        template:
          metadata:
            labels:
              app: bbs-frontend
              tier: frontend
              track: stable
          spec:
            containers:
              - name: bbs-frontend
                image: "docker.io/bobbai/bbs_frontend:k8s"
                ports:
                  - name: port
                    containerPort: 3000
      
      ---
      
      apiVersion: v1
      kind: Service
      metadata:
        name: bbs-frontend-service
      spec:
        selector:
          app: bbs-frontend
          tier: frontend
        ports:
        - protocol: "TCP"
          port: 3000
          targetPort: 3000
          nodePort: 30087
        type: NodePort

      執(zhí)行:

      kubectl apply -f bbs_backend -n bbs
      kubectl apply -f bbs_frontend -n bbs

      后,可以通過 dashboard 查看服務是否部署成功:
      截屏2020-12-20 上午12.05.16.png

      3. Gitlab 的 Helm 部署

      Gitlab 是什么?Gitlab 是一個非常著名的開源項目管理工具。除了具有管理進度,項目版本等基本功能之外,gitlab還附帶有一個強大的 CI/CD 系統(tǒng),這使得項目的自動化測試,部署變得十分方便。

      為什么要是用 Helm 進行部署呢?按照官方文檔提供的,使用 yaml 文件部署一個服務的話,正常來說需要編寫 yaml 文件來聲明相應的 Deployment, Service, PersistentVolumeClaim, PersistentVolume 等等資源。如果后續(xù)要對于資源的一些屬性,比如 PersistentVolume 的掛載目錄,卷的大小等等就會比較麻煩。Helm 則提供了一種模版化的方式,將服務的屬性提取到一個統(tǒng)一的文件中,然后只需要修改一次,就能在整個服務中生效,同時它也為Kubernetes 生態(tài)中的服務提供了包管理的功能,方便用戶在自己的集群下快速部署提供了 helm chart 的服務。
      關于 Helm 的安裝,可以參考官方文檔,這里不再詳細說明.

      (1) Gitlab 的 Helm 部署

      step1: 添加 helm 源(在master執(zhí)行)

      helm repo add stable https://kubernetes-charts.storage.
      helm repo add aliyun https://kubernetes.oss-cn-hangzhou./charts
      helm repo add apphub https://apphub./

      step2: 下載 gitlab-ce 的 charts

      helm pull stable/gitlab-ce
      // 目錄下會生成一個 gitlab-ce-版本號的壓縮包,通過tar命令解壓即可
      tar  -zxvf  gitlab-ce-xxx.tgz

      解壓后應當生成了一個名為 gitlab-ce 的目錄

      step3: 進入解壓后的目錄,并根據(jù)需求修改 values.yaml 文件

      cd gitlab-ce
      vim values.yaml

      截屏2020-12-13 下午10.35.42.png
      這幾處需要我們根據(jù)需求來修改,externalUrl 可以隨意寫,后續(xù)可以修改; 由于我并沒有購置額外的load balancer 服務,所以想要暴露服務,只能使用 NodePort 類型。

      step4:適配 1.19 集群(如果您的集群是1.16版本之前的,則這一步可以忽略)

      kubernetes 每個版本的yaml文件版本都有所不同,需要我們根據(jù)自己集群的版本進行適配,即修改 helm/template 中的一些 yaml 文件。

      • 修改1: vim gitlab-ce/templates/deployment.yaml

      添加:
      截屏2020-12-18 上午10.39.02.png

      • 修改2: vim gitlab-ce/charts/postgresql/templates/deployment.yaml

      添加:
      截屏2020-12-18 上午10.41.14.png

      • 修改3:vim gitlab-ce/charts/redis/templates/deployment.yaml

      截屏2020-12-18 上午10.43.45.png

      step5:創(chuàng)建 PersistentVolume

      由于gitlab需要將 postgres, redis 的數(shù)據(jù)持久化,因此如果此時根據(jù)gitlab-ce的charts來創(chuàng)建服務,由于我們并沒有聲明對應到gitlab自帶的 PersistentVolumeClaim 對應的掛載目錄下的 PersistentVolume, 服務就無法正常啟動。因此,我們首先創(chuàng)建四個文件夾:

      mkdir -p /data/gitlab/pv{1..4}

      然后創(chuàng)建4個聲明pv的yaml文件,模版如下:

      ---
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: gitlab-pv1
        namespace: gitlab
      spec:
        accessModes:
          - ReadWriteOnce
        capacity:
          storage: 10Gi
        hostPath:
          path: /data/gitlab/pv1
        persistentVolumeReclaimPolicy: Retain
        volumeMode: Filesystem

      然后依次 apply 這些 yaml 文件:

      kubectl apply -f pv1.yaml
      kubectl apply -f pv2.yaml
      kubectl apply -f pv3.yaml
      kubectl apply -f pv4.yaml

      隨后查看 pv 的狀態(tài)
      截屏2020-12-18 上午10.54.05.png
      證明創(chuàng)建成功

      step6:創(chuàng)建服務

      輸入:

      helm install gitlab gitlab-ce -n gitlab

      這里,-n 參數(shù)指定了服務的命名空間,您可以根據(jù)需求自行更改。

      查看服務狀態(tài):
      截屏2020-12-18 上午11.04.55.png
      證明服務創(chuàng)建成功,我們訪問 http://master IP:32363
      截屏2020-12-18 上午11.06.11.png
      證明部署成功。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多