1. 程式人生 > 其它 >運維工程師面試

運維工程師面試

一、linux

1. linux系統啟動流程

  • 第一步:開機自檢,載入BIOS
  • 第二步:讀取MBR
  • 第三步:Boot Loader grub引導選單
  • 第四步:載入kernel核心
  • 第五步:init程序依據inittab資料夾來設定執行級別
  • 第六步:init程序執行rc.sysinit
  • 第七步:啟動核心模組
  • 第八步:執行不同執行級別的指令碼程式
  • 第九步:執行/etc/rc.d/rc.lo

 

2. linux檔案型別

檔案屬性 檔案型別
- 常規檔案,即file
d 目錄檔案
b block device 即塊裝置檔案,如硬碟;支援以block為單位進行隨機訪問
c character device 即字元裝置檔案,如鍵盤支援以character為單位進行線性訪問
l symbolic link 即符號連結檔案,又稱軟連結檔案
p pipe 即命名管道檔案
s socket 即套接字檔案,用於實現兩個程序進行通訊

 

3. centos6和7怎麼將原始碼安裝的程式新增到開機自啟動?

  • 通用方法:編輯/etc/rc.d/rc.local檔案,在檔案末尾新增啟動服務命令
  • centos6:①進入到/etc/rc.d/init.d目錄下,②新建一個服務啟動指令碼,指令碼中指定chkconfig引數,③新增執行許可權,④執行chkconfig --add 新增服務自啟動
  • centos7:①進入到/usr/lib/systemd/system目錄下,②新建自定義服務檔案,檔案中包含[Unit] [Service] [Install]相關配置,然後新增下執行許可權,③執行systemctl enable 服務名稱

4. 簡述lvm,如何給使用lvm的/分割槽擴容?

  • 功能:可以對磁碟進行動態管理。動態按需調整大小
  • 概念:

①PV - 物理卷:物理卷在邏輯卷管理中處於最底層,它可以是實際物理硬碟上的分割槽,也可以是整個物理硬碟,也可以是raid裝置。
②VG - 卷組:卷組建立在物理卷之上,一個卷組中至少要包括一個物理卷,在卷組建立之後可動態新增物理捲到卷組中。一個邏輯卷管理系統工程中可以只有一個卷組,也可以擁有多個卷組。
③LV - 邏輯卷:邏輯卷建立在卷組之上,卷組中的未分配空間可以用於建立新的邏輯卷,邏輯卷建立後可以動態地擴充套件和縮小空間。系統中的多個邏輯卷可以屬於同一個卷組,也可以屬於不同的多個卷組。

 

 

 

  • 給/分割槽擴容步驟:

①新增磁碟
②使用fdisk命令對新增加的磁碟進行分割槽
③分割槽完成後修改分割槽型別為lvm
④使用pvcreate建立物理卷
⑤使用vgextend命令將新增加的分割槽加入到根目錄分割槽中
⑥使用lvextend命令進行擴容
⑦使用xfs_growfs調整卷分割槽大小


5. 為何du和df統計結果不一致?

  • 使用者刪除了大量的檔案被刪除後,在檔案系統目錄中已經不可見了,所以du就不會再統計它。
  • 然而如果此時還有執行的程序持有這個已經被刪除的檔案控制代碼,那麼這個檔案就不會真正在磁碟中被刪除,分割槽超級塊中的資訊也就不會更改,df仍會統計這個被刪除的檔案。
  • 可通過 lsof命令查詢處於deleted狀態的檔案,被刪除的檔案在系統中被標記為deleted。如果系統有大量deleted狀態的檔案,會導致du和df統計結果不一致。

 

6. 如何升級核心?

方法一
# 新增第三方yum源進行下載安裝。
Centos 6 YUM源:http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
Centos 7 YUM源:http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 先匯入elrepo的key,然後安裝elrepo的yum源:
rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 檢視可用的核心相關包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available 
yum -y --enablerepo=elrepo-kernel install

方法二
# 通過下載kernel image的rpm包進行安裝。
官方 Centos 6: http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
官方 Centos 7: http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
# 獲取下載連結進行下載安裝即可
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-4.4.185-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-4.4.185-1.el7.elrepo.x86_64.rp
# 檢視預設啟動順序
[root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (5.2.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.4.182-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-e34fb4f1527b4f2d9fc75b77c016b6e7) 7 (Core)
由上面可以看出新核心(4.12.4)目前位置在0,原來的核心(3.10.0)目前位置在1
# 設定預設啟動
[root@localhost ~]# grub2-set-default 0  // 0代表當前第一行,也就是4.12.4版本
# 重啟驗證

7. nginx日誌訪問量前十的ip怎麼統計?

awk '{array[$1]++}END{for (ip in array)print ip,array[ip]}' access.log |sort -k2 -rn|head


 

8. 如何刪除/var/log/下.log結尾的30天前的日誌?

find /var/log/ -type f -name .*.log -mtime 30|xargs rm -f


9. ansible有哪些模組?功能是什麼?

模組 功能
copy 拷貝檔案到被控端
cron 定時任務
fetch 拷貝被控端檔案到本地
file 檔案模組
group 使用者組模組
user 使用者模組
hostname 主機名模組
script 指令碼模組
service 服務啟動模組
command 遠端執行命令模組
shell 遠端執行命令模組,command高階用法
yum 安裝包組模組
setup 檢視主機系統資訊

10. nginx為什麼比apache快?

  • nginx採用epoll模型
  • apache採用select模型

11. 四層負載和七層負載區別是什麼?

  • 四層基於IP+埠進行轉發
  • 七層就是基於URL等應用層資訊的負載均衡

12. lvs有哪些工作模式?哪個效能高?

  • dr:直接路由模式,請求由 LVS 接受,由真實提供服務的伺服器直接返回給使用者,返回的時候不經過 LVS。(效能最高)

  • tun:隧道模式,客戶端將訪問vip報文傳送給LVS伺服器。LVS伺服器將請求報文重新封裝,傳送給後端真實伺服器。後端真實伺服器將請求報文解封,在確認自身有vip之後進行請求處理。後端真實伺服器在處理完資料請求後,直接響應客戶端。

  • nat:網路報的進出都要經過 LVS 的處理。LVS 需要作為 RS 的閘道器。當包到達 LVS 時,LVS 做目標地址轉換(DNAT),將目標 IP 改為 RS 的 IP。RS 接收到包以後,彷彿是客戶端直接發給它的一樣。RS 處理完,返回響應時,源 IP 是 RS IP,目標 IP 是客戶端的 IP。這時 RS 的包通過閘道器(LVS)中轉,LVS 會做源地址轉換(SNAT),將包的源地址改為 VIP,這樣,這個包對客戶端看起來就彷彿是 LVS 直接返回給它的。客戶端無法感知到後端 RS 的存在。

  • fullnat模式:fullnat模式和nat模式相似,但是與nat不同的是nat模式只做了兩次地址轉換,fullnat模式卻做了四次。


13. lvs nginx haproxy keeplived區別,優缺點?

參考連結:https://blog.51cto.com/816885/2529993?source=dra


14. 如下url地址,各個部分的含義

https://www.baidu.com/s?word=123&ie=utf-8

  • https: 使用https加密協議訪問
  • www.baidu.com/s: 請求地址
  • ?word&ie=utf-8: get請求的引數,多個引數&連線

15. tomcat各個目錄含義,如何修改埠,如何修改記憶體數?

  • bin 存放tomcat命令
  • conf 存放tomcat配置檔案
  • lib 存放tomcat執行需要載入的jar包
  • log 存在Tomcat執行產生的日誌
  • temp 執行過程中產生的臨時檔案
  • webapps 站點目錄
  • work 存放tomcat執行時的編譯後的檔案
  • conf/server.xml 修改埠號
  • bin/catalina.sh 修改jvm記憶體

 

16. nginx反向代理時,如何使後端獲取真正的訪問來源ip?

在location配置段新增以下內容:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;


17. nginx負載均衡演算法有哪些?

  • rr 輪訓
  • weight 加權輪訓
  • ip_hash 靜態排程演算法
  • fair 動態排程演算法
  • url_hash url雜湊
  • leat_conn 最小連線數

 

18. 如何進行壓力測試?

例如:模擬10個使用者,對百度首頁發起總共100次請求。
測試命令: ab -n 100 -c 10 https://www.baidu.com/index.htm


19. curl命令如何傳送https請求?如何檢視response頭資訊?如何傳送get和post表單資訊?

  • 傳送https請求:curl --tlsv1 ‘https://www.bitstamp.net/api/v2/transactions/btcusd/’
  • response頭資訊 :curl -I
  • get:curl 請求地址?key1=value1&key2=value2&key3=value3
  • post: curl -d “key1=value1&key2=value2&key3=value3”

二、mysql

1. 索引的為什麼使查詢加快?有啥缺點?

預設的方式是根據搜尋條件進行全表掃描,遇到匹配條件的就加入搜尋結果集合。如果我們對某一欄位增加索引,查詢時就會先去索引列表中一次定位到特定值的行數,大大減少遍歷匹配的行數,所以能明顯增加查詢的速度
缺點:

    • 建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加
    • 索引需要佔物理空間,除了資料表佔用資料空間之外,每一個索引還要佔用一定的物理空間,如果需要建立聚簇索引,那麼需要佔用的空間會更大
    • 以表中的資料進行增、刪、改的時候,索引也要動態的維護,這就降低了整數的維護速度

2. sql語句左外連線 右外連線 內連線 全連線區別

 

 

 

 


3.mysql資料備份方式,如何恢復?你們的備份策略是什麼?

  • 物理完全備份

備份所有資料庫檔案:/var/lib/mysql/*
備份所有binlog檔案: /var/lib/mysql/mysql-bin.*
備份選項檔案: /etc/my.cnf

  • mysqldump邏輯備份

mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db

  • 物理備份恢復

mv /var/lib/mysql /var/lib/mysql.old  #先把原來的資料目錄改名
cp -a /backups/mysql /var/lib

  • 邏輯備份資料恢復

mysql > use db_name
mysql > source /backup/mysqldump/db_name.db


4.如何配置資料庫主從同步,實際工作中是否遇到資料不一致問題?如何解決?

為每個伺服器配置唯一值的server-id

  • 主庫

開啟binlog日誌
建立主從複製使用者
檢視master的狀態

  • 從庫

change master to設定主庫資訊
start slave開始複製


 

5.二進位制日誌(binlog)用途?

BINLOG記錄資料庫的變更過程。例如建立資料庫、建表、修改表等DDL操作、以及資料表的相關DML操作,這些操作會導致資料庫產生變化,開啟binlog以後導致資料庫產生變化的操作會按照時間順序以“事件”的形式記錄到binlog二進位制檔案中


6.mysql資料引擎有哪些?

  • 常用的 myisam、innodb
  • 區別:

InnoDB 支援事務,MyISAM 不支援,這一點是非常之重要。事務是一種高階的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而 MyISAM就不可以了;
MyISAM 適合查詢以及插入為主的應用,InnoDB 適合頻繁修改以及涉及到安全性較高的應用;
InnoDB 支援外來鍵,MyISAM 不支援;
MyISAM 是預設引擎,InnoDB 需要指定;
InnoDB 不支援 FULLTEXT 型別的索引;
InnoDB 中不儲存表的行數,如 select count() from table 時,InnoDB;需要掃描一遍整個表來計算有多少行,但是 MyISAM 只要簡單的讀出儲存好的行數即可。注意的是,當 count()語句包含 where 條件時 MyISAM 也需要掃描整個表;
對於自增長的欄位,InnoDB 中必須包含只有該欄位的索引,但是在 MyISAM表中可以和其他欄位一起建立聯合索引;
清空整個表時,InnoDB 是一行一行的刪除,效率非常慢。MyISAM 則會重建表;
InnoDB 支援行鎖(某些情況下還是鎖整表,如 update table set a=1 where user like ‘%lee%’


7.如何查詢mysql資料庫存放路徑?

mysql> show variables like 'datadir%';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| datadir       | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)

8.mysql資料庫檔案字尾名有哪些?用途什麼?

  • myisam

.frm檔案:保護表的定義
.myd:儲存表的資料
.myi:表的索引檔案

  • innodb

.frm:儲存表的定義
.ibd:表空間


9.如何修改資料庫使用者的密碼?

mysql8之前
set password for 使用者名稱@localhost = password('新密碼'); 
mysqladmin -u使用者名稱 -p舊密碼 password 新密碼  
update user set password=password('123') where user='root' and host='localhost';

mysql8之後
# mysql8初始對密碼要求高,簡單的字串不讓改。先改成:MyNewPass@123;
alter user 'root'@'localhost' identified by 'MyNewPass@123';
# 降低密碼難度
set global validate_password.policy=0;
set global validate_password.length=4;
# 修改成簡易密碼
alter user 'root'@'localhost'IDENTIFIED BY '1111';

10.如何修改使用者許可權?如何檢視?

  • 授權:

grant all on *.* to user@'%' identified by 'passwd'

  • 檢視許可權

show grants for user@'%';


redis如何進行資料備份與恢復?

  • 備份

redis 127.0.0.1:6379> SAVE
建立 redis 備份檔案也可以使用命令 BGSAVE,該命令在後臺執行。

  • 還原

只需將備份檔案 (dump.rdb) 移動到 redis 安裝目錄並啟動服務即可
redis 127.0.0.1:6379> CONFIG GET dir

    1. “dir”
    2. “/usr/local/redis/bin”

容器相關


 

 

1. dockerfile有哪些關鍵字?用途是什麼?

 


 

 

2. 如何減小dockerfile生成映象體積?

  • 儘量選取滿足需求但較小的基礎系統映象,例如大部分時候可以選擇debian:wheezy或debian:jessie映象,僅有不足百兆大小;
  • 清理編譯生成檔案、安裝包的快取等臨時檔案;
  • 安裝各個軟體時候要指定準確的版本號,並避免引入不需要的依賴;
  • 從安全形度考慮,應用要儘量使用系統的庫和依賴;
  • 如果安裝應用時候需要配置一些特殊的環境變數,在安裝後要還原不需要保持的變數值;

 


 

 

3. dockerfile中CMD與ENTRYPOINT區別是什麼?

  • CMD 和 ENTRYPOINT 指令都是用來指定容器啟動時執行的命令。
  • 指定 ENTRYPOINT 指令為 exec 模式時,CMD指定的引數會作為引數新增到 ENTRYPOINT 指定命令的引數列表中。

 


 

 

4. dockerfile中COPY和ADD區別是什麼?

  • COPY指令和ADD指令都可以將主機上的資源複製或加入到容器映象中
  • 區別是ADD可以從 遠端URL中的資源不會被解壓縮。
  • 如果是本地的壓縮包ADD進去會被解壓縮

 


 

 

5. docker的cs架構元件有哪些?

 

 

 

 


 

 

6. docker網路型別有哪些?

  • host模式
  • container模式
  • none模式
  • bridge模式

 


 

 

7.命令相關:匯入匯出映象,進入容器,設定重啟容器策略,檢視映象環境變數,檢視容器佔用資源

  • 匯入映象 docker load -i xx.tar
  • 匯出映象docker save -o xx.tar image_name
  • 進入容器docker exec -it 容器命令 /bin/bash
  • 設定容器重啟策略啟動時 --restart選項
  • 檢視容器環境變數 docker exec {containerID} env
  • 檢視容器資源佔用docker stats test2

 


8.docker和vmware虛擬化區別?

 

 

 


 

 9.k8s的叢集元件有哪些?功能是什麼?

 

 

 


10.kubectl命令相關:如何修改副本數,如何滾動更新和回滾,如何檢視pod的詳細資訊,如何進入pod互動?

  • 修改副本數 kubectl scale deployment redis --replicas=3
  • 活動更新 kubectl set image deployments myapp-deploy myapp=myapp:v2
  • 回滾 kubectl rollout undo deployments myapp-deploy
  • 檢視pod詳細資訊 kubectl describe pods/<pod-name>
  • 進入pod互動 kubectl exec -it <pod-name> -c <container-name> bash

11.etcd資料如何備份?

  • etcdctl --endpoints=“https://192.168.32.129:2379,https://192.168.32.130:2379,192.168.32.128:2379” --cacert=/etc/kubernetes/cert/ca.pem --key=/etc/etcd/cert/etcd-key.pem --cert=/etc/etcd/cert/etcd.pem snapshot save snashot1.db
  • Snapshot saved at snashot1.db

12.k8s控制器有哪些?

  • 副本集(ReplicaSet)
  • 部署(Deployment)
  • 狀態集(StatefulSet)
  • Daemon集(DaemonSet)
  • 一次任務(Job)
  • 計劃任務(CronJob)
  • 有狀態集(StatefulSet)

13.哪些是叢集級別的資源?

  • Namespace
  • Node
  • Role
  • ClusterRole
  • RoleBinding
  • ClusterRoleBinding

14.pod狀態有哪些?

  • Pending 等待中
  • Running 執行中
  • Succeeded 正常終止
  • Failed 異常停止
  • Unkonwn 未知狀態

15.pod建立過程是什麼?

 

 

 

 


16.pod重啟策略有哪些?

Pod的重啟策略有3種,預設值為Always。

  • Always : 容器失效時,kubelet 自動重啟該容器;
  • OnFailure : 容器終止執行且退出碼不為0時重啟;
  • Never : 不論狀態為何, kubelet 都不重啟該容器

17.資源探針有哪些?

  • ExecAction:在容器中執行一個命令,並根據其返回的狀態碼進行診斷的操作稱為Exec探測,狀態碼為0表示成功,否則即為不健康狀態。
  • TCPSocketAction:通過與容器的某TCP埠嘗試建立連線進行診斷,埠能夠成功開啟即為正常,否則為不健康狀態。
  • HTTPGetAction:通過向容器IP地址的某指定埠的指定path發起HTTP GET請求進行診斷,響應碼為2xx或3xx時即為成功,否則為失敗。

18.requests和limits用途是什麼?

  • “requests”屬性定義其請求的確保可用值,即容器執行可能用不到這些額度的資源,但用到時必須要確保有如此多的資源可用
  • ”limits”屬性則用於限制資源可用的最大值,即硬限制

19.kubeconfig檔案包含什麼內容,用途是什麼?

包含叢集引數(CA證書、API Server地址),客戶端引數(上面生成的證書和私鑰),叢集context 資訊(叢集名稱、使用者名稱)。


20. RBAC中role和clusterrole區別,rolebinding和 clusterrolebinding區別?

  • Role 可以定義在一個 namespace 中,如果想要跨 namespace則可以建立ClusterRole,ClusterRole 具有與 Role相同的許可權角色控制能力,不同的是 ClusterRole 是叢集級別的
  • RoleBinding 適用於某個名稱空間內授權,而 ClusterRoleBinding 適用於叢集範圍內的授權

21.ipvs為啥比iptables效率高?

IPVS模式與iptables同樣基於Netfilter,但是ipvs採用的hash表,iptables採用一條條的規則列表。iptables又是為了防火牆設計的,叢集數量越多iptables規則就越多,而iptables規則是從上到下匹配,所以效率就越是低下。因此當service數量達到一定規模時,hash查表的速度優勢就會顯現出來,從而提高service的服務效能


22.sc pv pvc用途,容器掛載儲存整個流程是什麼?

  • PVC:Pod 想要使用的持久化儲存的屬性,比如儲存的大小、讀寫許可權等。
  • PV :具體的 Volume 的屬性,比如 Volume 的型別、掛載目錄、遠端儲存伺服器地址等。
  • StorageClass:充當 PV 的模板。並且,只有同屬於一個 StorageClass 的 PV 和 PVC,才可以繫結在一起。當然,StorageClass 的另一個重要作用,是指定 PV 的 Provisioner(儲存外掛)。這時候,如果你的儲存外掛支援 Dynamic Provisioning 的話,Kubernetes 就可以自動為你建立 PV 了。

 

 

 


23.nginx ingress的原理本質是什麼?

    • ngress controller通過和kubernetes api互動,動態的去感知叢集中ingress規則變化,
    • 然後讀取它,按照自定義的規則,規則就是寫明瞭哪個域名對應哪個service,生成一段nginx配置,
    • 再寫到nginx-ingress-controller的pod裡,這個Ingress
      controller的pod裡執行著一個Nginx服務,控制器會把生成的nginx配置寫入/etc/nginx.conf檔案中,
    • 然後reload一下使配置生效。以此達到域名分配置和動態更新的問題。

24.描述不同node上的Pod之間的通訊流程

 

 

 


 

25.k8s叢集節點需要關機維護,需要怎麼操作

  • 進行pod驅逐:kubelet drain  <node_name>
  • 檢查node上是否無pod執行,切被驅逐的pod已經在其他節點執行正常
  • 關機維護
  • 開機啟動相關服務(注意啟動順序)
  • 解除node節點不可排程:kubectl uncordon node
  • 建立測試pod,並使用節點標籤測試節點可以被正常排程

26.canal和flannel區別

  • Flannel(簡單、使用居多):基於Vxlan技術(疊加網路+二層隧道),不支援網路策略
  • Calico(較複雜,使用率少於Flannel):也可以支援隧道網路,但是是三層隧道(IPIP),支援網路策略
  • Calico專案既能夠獨立地為Kubernetes叢集提供網路解決方案和網路策略,也能與flannel結合在一起,由flannel提供網路解決方案,而Calico此時僅用於提供網路策略。

27.prometheus對比zabbix有哪些優勢?

https://blog.csdn.net/wangyiyungw/article/details/85774969**


28.prometheus元件有哪些,功能是什麼?

 

 

 


29.簡述從新增節點監控到grafana成圖的整個流程

  • 被監控節點安裝exporter
  • prometheus服務端新增監控項
  • 檢視prometheus web介面——status——targets
  • grafana建立圖表

30.在工作中用到了哪些exporter

  • node-exporter監控linux主機
  • cAdvisor監控容器
  • MySQLD Exporter監控mysql
  • Blackbox Exporter網路探測
  • Pushgateway採集自定義指標監控
  • process exporter程序監控

 

三、其他

1. Elasticsearch的資料如何備份與恢復?

https://www.cnblogs.com/tcy1/p/13492361.html
https://blog.csdn.net/moxiaomomo/article/details/78401400?locationNum=8&fps=1


2. 你們專案中使用的logstash過濾器外掛是什麼?實現哪些功能?

  • date 日期解析
  • grok 正則匹配解析
  • overwrite 寫某個欄位
  • dissect 分隔符解析
  • mutate 對欄位做處理
  • json 解析
  • geoip 地理位置解析
  • ruby 修改logstash event

3. elasticsearch分片副本是什麼?你們配置的引數是多少?

https://juejin.cn/post/6844903862088777736


4.備份系統中所有容器映象

#備份映象列表
docker images|awk 'NR>1{print $1":"$2}'|sort > images.list。
#匯出所有映象為當前目錄下檔案:
while read img; do
    echo $img
    file="${img/\//-}"
    sudo docker save --output $file.tar $img
done < images.list
#將本地映象檔案匯入為Docker映象:
while read img; do
    echo $img
    file="${img/\//-}"
    docker load < $file.tar
done < images.list

 

4.批量獲取所有主機的系統資訊

  • 使用python的paramiko庫,ssh登陸主機執行查詢操作
  • 使用shell指令碼批量ssh登陸主機並執行命令
  • 使用ansible的setup模組獲取主機資訊
  • prometheus的node_exporter收集主機資源資訊

5.django的mtv模式流程

 

 

 


6. python建立,進入,退出,檢視虛擬環境

  • 安裝軟體包

pip3 install virtualenv

  • 檢測安裝是否成功

virtualenv --version

  • 建立虛擬環境
  • cd到要建立虛擬環境的目錄

cd github/test/venv/

  • 建立虛擬環境

virtualenv test

  • 啟用虛擬環境

source test/bin/activate(activate路徑)

  • 退出虛擬環境

deactivate


7. python如何匯出、匯入環境依賴包

  • 匯出環境

pip freeze >> requirements.txt

  • 匯入環境

pip install -r requirement.txt


8. 列舉常用的git命令

  • $ git init
  • $ git config
  • $ git add
  • $ git commit
  • $ git branch
  • $ git checkout
  • $ git tag
  • $ git push
  • $ git status
  • $ git log

9. git gitlab jenkins的CICD流程如何配置

  • 開發者git提交程式碼至gitlab倉庫
  • jenkins從gitlab拉取程式碼,觸發映象構建
  • 映象上傳至harbor私有倉庫
  • 映象下載至執行機器
  • 映象執行