天天看點

花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十二)1為什麼寫這套Java求職筆記2K8s容器雲叢集拓展技術大綱圖3K8s容器雲叢集拓展技術4結束語5個人說明

前言:前幾天有粉絲問我,網上java面試題總是參差不齊,希望我為他整理一套全面的java面試題,并且這套java面試題有個要求,必須能夠讓他20天就能看完這些面試題,他說現在很多面試題我看都得看3個月才能看完,然後我才能去找工作,但是自己得時間有限是以想讓我幫他總結一套萬能面試java求職筆記。接下來我将會至少分為12個章節進行闡述這套Java求職筆記,感興趣的可以堅持看完!覺得不錯的可以點個贊。

1為什麼寫這套Java求職筆記

很早的時候我就想寫一些Java求職方向的一些文章,由于很長時間耽擱了加上,有粉絲背景問我,可不可以幫他總結一些java求職筆記,他看了很多Java技術有很多技術,很迷茫不知道學哪些,我笑着說,不要着急,無論你到什麼時候你都會迷茫,因為技術一直在更新,謝謝你信任我,解救你的迷茫唯一辦法就是多看LRyab部落格,就是這樣我帶着粉絲的問題,開始編寫了這套Java求職筆記,看完這套求職筆記,我相信很多人都會找到屬于自己的心儀工作。

2K8s容器雲叢集拓展技術大綱圖

花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十二)1為什麼寫這套Java求職筆記2K8s容器雲叢集拓展技術大綱圖3K8s容器雲叢集拓展技術4結束語5個人說明

3K8s容器雲叢集拓展技術

k8s是什麼,K8s是管理容器狀态的一款容器治理軟體,叢集中啟動的容器全部跑在了K8s的叢集節點上,如果其中一個節點挂了另外一個就會自動啟動。

3.1K8s叢集環境搭建

準備4台虛拟主機

安裝docker環境

檢查docker安裝

準備K8s環境工具:Rancher+Docker

使用Docker工具安裝rancher

檢測rancher是否安裝成功

啟動通路rancher

添加K8s節點

配置節點伺服器

3.2K8s叢集部署jenkins容器鏡像

3.3K8s部署tomcat鏡像應用

1、準備tomcat鏡像

2、編寫部署tomcat鏡像的yaml編寫

vim k8s-tomcat7.yamlapiVersion: apps/v1beta2              #目前配置格式版本
kind: Deployment                                #建立資源類型
metadata:                                       #資源中繼資料,name是必須項
name: tomcat7-deployment
namespace: kube-system
spec:                                           #資源規格說明
replicas: 1                                   #副本數量
selector:
matchLabels:
k8s-app: web-tomcat7
template:                                 #定義pod模闆
metadata:                                   #pod中繼資料,至少一個label
labels:
k8s-app: web-tomcat7
spec:                                       #pod規格說明
containers:
- name: tomcat7
image: java8tomcat7:1.0
ports:
- containerPort: 8080

apiVersion: v1
kind: Service
metadata:
name: web-tomcat7
namespace: kube-system
spec:
ports:
- port: 8099
targetPort: 8080
nodePort: 30899  #浏覽器通路的端口
selector:
k8s-app: web-tomcat7
type: NodePort      

3啟動部署k8s

運作:kubectl apply -f k8s-tomcat7.yaml

删除:kubectl delete -f k8s-tomcat7.yaml

檢視所有節點:kubectl get pods --all-namespaces -o wide

檢視某個節點的情況:kubectl description tomcat7-deployment-87f87c9ff-mks5t get pods

3.4k8s yaml檔案詳解

apiVersion: v1       #必選,版本号,例如v1
kind: Pod       #必選,Pod
metadata:       #必選,中繼資料
  name: string       #必選,Pod名稱
  namespace: string    #必選,Pod所屬的命名空間
  labels:      #自定義标簽
    - name: string     #自定義标簽名字
  annotations:       #自定義注釋清單
    - name: string
spec:         #必選,Pod中容器的詳細定義
  containers:      #必選,Pod中容器清單
  - name: string     #必選,容器名稱
    image: string    #必選,容器的鏡像名稱
    imagePullPolicy: [Always | Never | IfNotPresent] #擷取鏡像的政策 Alawys表示下載下傳鏡像 IfnotPresent表示優先使用本地鏡像,否則下載下傳鏡像,Nerver表示僅使用本地鏡像
    command: [string]    #容器的啟動指令清單,如不指定,使用打包時使用的啟動指令
    args: [string]     #容器的啟動指令參數清單
    workingDir: string     #容器的工作目錄
    volumeMounts:    #挂載到容器内部的存儲卷配置
    - name: string     #引用pod定義的共享存儲卷的名稱,需用volumes[]部分定義的的卷名
      mountPath: string    #存儲卷在容器内mount的絕對路徑,應少于512字元
      readOnly: boolean    #是否為隻讀模式
    ports:       #需要暴露的端口庫号清單
    - name: string     #端口号名稱
      containerPort: int   #容器需要監聽的端口号
      hostPort: int    #容器所在主機需要監聽的端口号,預設與Container相同
      protocol: string     #端口協定,支援TCP和UDP,預設TCP
    env:       #容器運作前需設定的環境變量清單
    - name: string     #環境變量名稱
      value: string    #環境變量的值
    resources:       #資源限制和請求的設定
      limits:      #資源限制的設定
        cpu: string    #Cpu的限制,機關為core數,将用于docker run --cpu-shares參數
        memory: string     #記憶體限制,機關可以為Mib/Gib,将用于docker run --memory參數
      requests:      #資源請求的設定
        cpu: string    #Cpu請求,容器啟動的初始可用數量
        memory: string     #記憶體清楚,容器啟動的初始可用數量
    livenessProbe:     #對Pod内個容器健康檢查的設定,當探測無響應幾次後将自動重新開機該容器,檢查方法有exec、httpGet和tcpSocket,對一個容器隻需設定其中一種方法即可
      exec:      #對Pod容器内檢查方式設定為exec方式
        command: [string]  #exec方式需要制定的指令或腳本
      httpGet:       #對Pod内個容器健康檢查方法設定為HttpGet,需要制定Path、port
        path: string
        port: number
        host: string
        scheme: string
        HttpHeaders:
        - name: string
          value: string
      tcpSocket:     #對Pod内個容器健康檢查方式設定為tcpSocket方式
         port: number
       initialDelaySeconds: 0  #容器啟動完成後首次探測的時間,機關為秒
       timeoutSeconds: 0   #對容器健康檢查探測等待響應的逾時時間,機關秒,預設1秒
       periodSeconds: 0    #對容器監控檢查的定期探測時間設定,機關秒,預設10秒一次
       successThreshold: 0
       failureThreshold: 0
       securityContext:
         privileged:false
    restartPolicy: [Always | Never | OnFailure]#Pod的重新開機政策,Always表示一旦不管以何種方式終止運作,kubelet都将重新開機,OnFailure表示隻有Pod以非0退出碼退出才重新開機,Nerver表示不再重新開機該Pod
    nodeSelector: obeject  #設定NodeSelector表示将該Pod排程到包含這個label的node上,以key:value的格式指定
    imagePullSecrets:    #Pull鏡像時使用的secret名稱,以key:secretkey格式指定
    - name: string
    hostNetwork:false      #是否使用主機網絡模式,預設為false,如果設定為true,表示使用主控端網絡
    volumes:       #在該pod上定義共享存儲卷清單
    - name: string     #共享存儲卷名稱 (volumes類型有很多種)
      emptyDir: {}     #類型為emtyDir的存儲卷,與Pod同生命周期的一個臨時目錄。為空值
      hostPath: string     #類型為hostPath的存儲卷,表示挂載Pod所在主控端的目錄
        path: string     #Pod所在主控端的目錄,将被用于同期中mount的目錄
      secret:      #類型為secret的存儲卷,挂載叢集與定義的secre對象到容器内部
        scretname: string  
        items:     
        - key: string
          path: string
      configMap:     #類型為configMap的存儲卷,挂載預定義的configMap對象到容器内部
        name: string
        items:
        - key: string      

3.5K8s常用指令

1建立資源對象根據yaml配置檔案建立資源對象:kubectl create -f ***.yaml

2檢視資源對象

檢視資源版本标簽:kubectl api-versions

檢視叢集狀态:kubectl get cs

檢視叢集節點資訊:kubectl get nodes

檢視所有Pod清單:kubectl get pods

檢視deployment:kubectl get deploy

檢視端口映射:kubectl get svc

檢視指定命名空間的服務:kubectl get svc -n kubectl-system

顯示運作中的Pod、Service、Deployment以及ReplicaSet的關鍵資訊:kubectl get all

檢視所有的命名空間:kubectl get all --all-namespace

3描述資源對象

顯示Node的詳細資訊:kubectl describe nodes <node-name>

顯示Pod的詳細資訊:kubectl describe pods <pod-name>

顯示由RC管理的Pod的資訊:kubectl describe pods <rc-name>

4删除資源對象

基于pod.yaml定義的名稱删除Pod:kubectl delete -f pod.yaml

删除所有Pod:kubectl delete pods --all

于删除名稱為my_pod的Pod:kubectl delete pod my_pod

5執行容器指令

執行Pod的date指令:kubectl exec <pod-name> date

指定Pod中某個容器執行date指令:kubectl exec <pod-name> -c <container-name> date

通過bash進入容器:kubectl exec -it <pod-name> -c <container-name> /bin/bash

kubectl exec -it container-name /bin/bash

6檢視容器日志

檢視容器輸出到stdout的日志:kubectl logs <pod-name>

跟蹤檢視容器的日志,相當于tail -f指令的結果:kubectl logs -f <pod-name> -c

4結束語

LRyab部落格Java求職筆記系列,到目前更新完畢,大家可以根據需要去自行掌握前10個章節推薦大家掌握後2個章節大家可以根據需要進行了解,還是那句話,圍繞着自己擅長的技術去學習,關鍵是學以緻用能夠在工作中應用,任何技術知識最終都是為了變現,如果學習技術不能賺錢,即使這門技術再好也不推薦大家學習。

5個人說明

我是LRyab部落格,專注電商項目實戰開發,擅長網站搭建與技術問題指導,經驗是由一點一點積累的,思維也是由一天一天訓練出來的。謝謝大家的閱讀,原創不易,如果你認為文章對你有所幫助,就點個贊感謝大家支援,你的點贊是我持續寫作的動力!