前言:前幾天有粉絲問我,網上java面試題總是參差不齊,希望我為他整理一套全面的java面試題,并且這套java面試題有個要求,必須能夠讓他20天就能看完這些面試題,他說現在很多面試題我看都得看3個月才能看完,然後我才能去找工作,但是自己得時間有限是以想讓我幫他總結一套萬能面試java求職筆記。接下來我将會至少分為12個章節進行闡述這套Java求職筆記,感興趣的可以堅持看完!覺得不錯的可以點個贊。
1為什麼寫這套Java求職筆記
很早的時候我就想寫一些Java求職方向的一些文章,由于很長時間耽擱了加上,有粉絲背景問我,可不可以幫他總結一些java求職筆記,他看了很多Java技術有很多技術,很迷茫不知道學哪些,我笑着說,不要着急,無論你到什麼時候你都會迷茫,因為技術一直在更新,謝謝你信任我,解救你的迷茫唯一辦法就是多看LRyab部落格,就是這樣我帶着粉絲的問題,開始編寫了這套Java求職筆記,看完這套求職筆記,我相信很多人都會找到屬于自己的心儀工作。
2K8s容器雲叢集拓展技術大綱圖
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部落格,專注電商項目實戰開發,擅長網站搭建與技術問題指導,經驗是由一點一點積累的,思維也是由一天一天訓練出來的。謝謝大家的閱讀,原創不易,如果你認為文章對你有所幫助,就點個贊感謝大家支援,你的點贊是我持續寫作的動力!