吾八哥學k8s(三):kubernetes里創建資源的方法

来源:https://www.cnblogs.com/5bug/archive/2020/04/19/12733863.html
-Advertisement-
Play Games

上一篇里已經成功的將一個golang的demo服務部署到k8s環境里了,部署的時候我們用到了yaml配置文件,今天這裡簡單的介紹下如何使用創建kubernetes里的資源。在kubernetes里,一切對象皆為資源,可以通過命令或配置文件來創建。 命令行創建資源 通過命令行可以創建namespace ...


上一篇里已經成功的將一個golang的demo服務部署到k8s環境里了,部署的時候我們用到了yaml配置文件,今天這裡簡單的介紹下如何使用創建kubernetes里的資源。在kubernetes里,一切對象皆為資源,可以通過命令或配置文件來創建。

命令行創建資源

通過命令行可以創建namespace、deployment、service、ingress、configmap、secret等很多資源類型

這裡通過命令創建一個名為k8s-test的namespace,命令如下:

kubectl create namespace k8s-test

執行後通過:kubectl get namespace命令可以查到剛剛創建的namespace,如下圖:

1586611076295.jpg

其他的資源創建方法,可以查看kubernetes中文文檔:http://docs.kubernetes.org.cn/490.html

通過配置文件創建資源

上一篇里我們部署k8s-demo服務的時候就是使用配置文件來創建kubernetes資源的,因為使用配置文件可以定義多種資源類型來同時創建,比手工一條條命令去創建確實是方便很多。這裡同樣通過創建一個k8s-test2的namespace來測試效果,定義yaml配置文件k8s-test2.yaml如下:

apiVersion: v1
kind: Namespace
metadata:
   name: k8s-test2
   labels:
     name: k8s-test2

上面的配置文件里定義了k8s-test2的namespace名稱,同時還指定了一個label。執行命令"kubectl apply -f k8s-test2.yaml"後查詢namespace列表如下圖:

image.png

yaml配置文件里還可以定義很多其他的資源對象,根據創建的資源類型而定。

Deployment配置文件說明

這裡將上一篇里k8s-demo.yaml文件的配置文件做個簡單的說明,補充了若幹常用的定義類型:

---
    apiVersion: apps/v1  #必須 指定api版本,此值必須在kubectl api-versions里
    kind: Deployment  #必須 指定資源類型
    metadata:  #必須 元數據
      name: k8s-demo  #必須 符合RFC1035規範的名稱
      namespace: default  #可選 指定命名空間,預設為default
      labels:  #可選 標簽選擇器,一般用於selector
        app: k8s-demo  #label定義
    spec:  #必須 資源詳細
      selector:  #可選 選擇器
        matchLabels: 
          app: k8s-demo
      replicas: 4  #可選 創建pod的副本數量
      revisionHistoryLimit: 10  #可選 歷史版本最多保留的版本數量
      minReadySeconds: 5 #可選 Pod對象啟動後多長時間認為就緒,單位秒
      strategy:  # 更新策略
        type: RollingUpdate # 滾動更新
        rollingUpdate:
          maxSurge: 1  #可選 可以超過期望值的最大pod數 預設為25%,maxSurge、maxUnavailable不能同時為0,都可以設置為數字或百分比
          maxUnavailable: 1  #可選 在更新時最大不可用的pod數量 預設為25% 
      template:
        metadata:
          labels:
            app: k8s-demo
        spec:
          restartPolicy: Always  #表示自動重啟
          containers:
          - image: www.5bug.wang/docker/k8s-demo:1.0  #容器使用的鏡像地址
            imagePullPolicy: IfNotPresent  #鏡像拉取策略Always、Never、IfNotPresent
            command: ["/bin/bash","-c","./k8s-demo"]  #啟動命令,需要前臺運行命令
            # env:  #指定環境變數
            #   - name: app_env
            #     value: qa
            name: k8s-demo
            ports:
            - containerPort: 8080  #容器埠
              protocol: TCP
            resources:  #定義資源數據
              limits:
                cpu: 100m
                memory: 100Mi
              requests:
                cpu: 50m
                memory: 50Mi
            livenessProbe:  #健康檢查設置
              tcpSocket:
                port: 8080  #服務埠
              initialDelaySeconds: 10  #第一次檢測在容器啟動後多長時間後開始
              timeoutSeconds: 3  #檢測的超時時間 
            readinessProbe:  #探針
              httpGet:
                path: /ping  #健康檢查介面定義
                port: 8080  #健康檢查埠
              initialDelaySeconds: 10
              timeoutSeconds: 2
            volumeMounts:  #掛載配置
              - name: logs  #掛載設備的名字,與volumes[*].name 需要對應    
                mountPath: /data/logs  #掛載到容器的/data/logs下
                readOnly: false  
          volumes:  #定義一組掛載設備  
            - name: logs  #定義一個掛載設備的名字  
              hostPath:
                path: /data/logs  #掛載設備類型為hostPath,路徑為宿主機下的/data/logs

---
    apiVersion: v1
    kind: Service  #定義Service
    metadata:
      name: k8s-demo-svc
      namespace: default
      labels:
        app: k8s-demo
    spec:
      ports:
        - name: api
          port: 8080
          protocol: TCP
          targetPort: 8080
      selector:
        app: k8s-demo
    
---
    apiVersion: extensions/v1beta1
    kind: Ingress  #定義ingress
    metadata:
      name: k8s-demo-ingress
      namespace: default
    spec:
      rules:
      - host: k8s-demo.local  #ingress名稱
        http:
          paths:
          - path: /
            backend:
              serviceName: k8s-demo-svc
              servicePort: api

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 簡介 是最簡單的使用 的方式,而 是最流行的 資料庫。兩者在分散式、微服務架構中使用率極高,本文將用實例介紹如何在 中整合 的兩種方法: 和`MongoTemplate`。 代碼結構如下: 2 項目準備 2.1 啟動MongoDB實例 為了方便,使用 來啟動 ,詳細指導文檔請參考: "用Dock ...
  • 知識無界 記錄tomcat和mybatis源碼導入到eclipse的過程 開發這麼久了,不能老crud,看看人家的源碼和設計思路。 0. tomcat源碼導入eclipse 下載tomcat源碼https://github.com/apache/tomcat, 然後按步驟下載(也可用git clon ...
  • springboot 項目使用阿裡雲簡訊服務發送手機驗證碼 (第一篇) 1、註冊阿裡雲賬戶進行賬號實名認證 2、申請簡訊簽名和模板 3、創建access_key和access_secret 4、然後就是代碼編寫 一、找到產品與服務裡面的雲通信模塊,然後找到簡訊服務,開通簡訊服務。我這裡已經開通,可直 ...
  • Python變數和數據類型 數據類型 print語句 註釋 Python的註釋以 # 開頭,後面的文字直到行尾都算註釋 # 這一行全部都是註釋... print 'hello' # 這也是註釋 這裡要註意註意:不管你是為了Python就業還是興趣愛好,記住:項目開發經驗永遠是核心,如果你沒有2020 ...
  • 頁面寫死el-select下拉框標簽: 通過v-for="item in stateArr"綁定,stateArr聲明在Vue組件裡面的data參數裡面代碼如下: <el-form class="small-space" :model="createdItem" label-position="le ...
  • 在C++11中, 不再只有邏輯與的含義,還可能是右值引用: 但也不盡然, 還可能是轉發引用: “轉發引用”(forwarding reference)舊稱“通用引用”(universal reference),它的“通用”之處在於你可以拿一個左值綁定給轉發引用,但不能給右值引用: 一個函數的參數要想 ...
  • 1、在主函數中使用join()方法。 t1.start(); t2.start(); t3.start(); t1.join();//不會導致t1和t2和t3的順序執行 t2.join(); t3.join(); System.out.println("Main finished"); 2、Coun ...
  • 本題要求兩個給定正整數的最大公約數和最小公倍數。輸入格式:輸入在一行中給出兩個正整數M和N(≤1000)。輸出格式:在一行中順序輸出M和N的最大公約數和最小公倍數,兩數字間以1空格分隔。代碼如下:#!/usr/bin/python# -*- coding: utf-8 -*-#定義求公約數的方法de... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...