
時間過的很快,距離畢業(yè)離校已經(jīng)過去將近三個月,上班也一個快一個半月,每天都在不斷的接觸新的東西,新舊知識需要融合,每周公司新人需要進(jìn)行周報總結(jié),算是一次新舊知識融合,但是輸出文檔只對內(nèi)開放,外網(wǎng)查閱不到,所以還是準(zhǔn)備花些時間進(jìn)行整理進(jìn)行知識融合過程,順便梳理下,整個學(xué)習(xí)周期,哪個環(huán)節(jié)可能出現(xiàn)了問題,哪些環(huán)節(jié)可以優(yōu)化,不進(jìn)行多層次的思考,發(fā)現(xiàn)不出問題,就算是多層次的思考,也會因為時機(jī)和場景等因素忽略掉部分問題。
整個輸出文檔按下面幾個部分進(jìn)行書寫:
先介紹下入職的行業(yè):云計算層次中的PAAS層相關(guān)的部署和開發(fā)工作
1. 做了什么

部門有新人培養(yǎng)計劃,原本按部就班的按照培養(yǎng)計劃來就是整個的學(xué)習(xí)計劃,但是中途會兼顧項目的緊急程度而需要人手,所以即使是經(jīng)驗不足的情況下,也需要進(jìn)行團(tuán)隊協(xié)作開發(fā)。

整個的培養(yǎng)計劃大致分為這么幾部分:
- 熟悉部門相關(guān)業(yè)務(wù)
- 針對裸服務(wù)器進(jìn)行相關(guān)的PAAS部署
- 學(xué)習(xí)Docker 容器技術(shù),K8s 容器集群管理工具
- 學(xué)習(xí)相關(guān)Ansible 自動化運(yùn)維工具
- 學(xué)習(xí)內(nèi)部集成的部署工具的整個業(yè)務(wù)流程和代碼總結(jié)
- 測試開發(fā)工作:UT
- 接手相關(guān)開發(fā)工作
這一個月還是按照培養(yǎng)計劃進(jìn)行著,時間安排和任務(wù)也比較契合。占用時間比較大的一塊是搭建PAAS環(huán)境搭建。
通過對裸服務(wù)的一些列安裝部署,漸漸明白,類似于阿里云、騰訊云、百度云的產(chǎn)品底層大概是個什么樣的。
簡單從其中一個場景講起:比如我們從阿里云官網(wǎng)購買云服務(wù)器。
各類廠商機(jī)房有大量高性能服務(wù)器,性能高,內(nèi)存大,存儲空間大。
從裸服務(wù)器開始講起:
- 給裸服務(wù)器安裝操作系統(tǒng): 一般是centos
- 給服務(wù)器安裝openstack: 一套開源的云計算管理平臺
- 各服務(wù)器按照場景或者需求,組成服務(wù)器群,各服務(wù)器之間可以相互通信
- 其中一個服務(wù)器可以進(jìn)行遠(yuǎn)程登入,進(jìn)而對多臺服務(wù)器管理,這個暫且叫做控制節(jié)點(diǎn),其他可以稱為計算節(jié)點(diǎn)
- 在openstack 基礎(chǔ)上:可以將這些服務(wù)器群看成是一個更巨型的計算機(jī)(比單獨(dú)的某個服務(wù)器性能、存儲翻倍)
- 利用虛擬化技術(shù)可以將這個巨型的計算機(jī)分成創(chuàng)建多個租戶(即你購買的云服務(wù)器),這些租戶的容量,cpu,磁盤空間等可以根據(jù)需求進(jìn)行劃分,各租戶可以綁定浮動IP,且各租戶彼此之間不影響
- 租戶可以創(chuàng)建,銷毀,回收
一句話總結(jié)這個過程:將物理上獨(dú)立的服務(wù)器群進(jìn)行集合成"更大的計算機(jī)", 在更大的計算機(jī)的基礎(chǔ)上利用虛擬化技術(shù),又可以切分成相互獨(dú)立的小型計算機(jī),小型計算機(jī)可以創(chuàng)建、銷毀、回收等操作。
即你購買云服務(wù)的背后是巨型服務(wù)器下劃分的小型計算機(jī),按照你購買的時限給予你一定的使用權(quán),不續(xù)費(fèi)之后,這個云服務(wù)器就被回收了。
當(dāng)然公司內(nèi)部對各種開源工具進(jìn)行了進(jìn)一步的封裝,使得安裝部署更為簡便,我大概花了兩周的時間從裸服務(wù)器搭建高可用性集群(其實熟悉了之后,一兩天就能搞定)。
除開發(fā)相關(guān)業(yè)務(wù)之外,還接手部門的部分行政工作,主要原因是因為我是新人。
2. 學(xué)了什么

Linux
Linux 可能現(xiàn)在是開發(fā)人員的必備了,在學(xué)校期間相關(guān)的科研工作其實并沒有太多的場景使用Linux,因為Linux 在服務(wù)器層面使用居多。

好,假如你現(xiàn)在也是沒有具體場景的Linux初學(xué)者,想要學(xué)習(xí)Linux,有兩個選擇:
- 在個人PC機(jī)上Vmware 虛擬機(jī)安裝Linux 或者本機(jī)Linux 操作系統(tǒng)的安裝
- 購買主流廠商的云服務(wù)器:大概幾十塊錢一個月(主流廠商對學(xué)生有優(yōu)惠價)
切換自己的開發(fā)環(huán)境或者日常辦公環(huán)境為Linux. 經(jīng)常使用,先不說了解內(nèi)核,正常工作還是沒啥問題的。
那主要的入門型的Linux 需要掌握哪些東西:記住一句話:Linux 一切皆文件
我總結(jié)了下大概這幾個方面:
- 文件目錄操作
常用的命令有:
mkdir file # 創(chuàng)建文件夾
rmdir file # 銷毀空文件夾
mv # 移動文件夾或者文件
cp # 復(fù)制文件夾或者文件
ls # 查看文件內(nèi)信息
cd # 切換目錄
pwd# 顯示當(dāng)前目錄
rm # 刪除文件或者目錄
- Linux 目錄結(jié)構(gòu)
安裝好的Linux 操作系統(tǒng)存在幾個特定的文件夾
root # 用戶目錄
boot # 掛載目錄,引導(dǎo)類目錄
etc # 配置目錄
home # 普通用戶目錄
mnt # 默認(rèn)光驅(qū),軟驅(qū)目錄
bin # 命令目錄
sbin # 帶權(quán)限的命令目錄
var # 異常信息目錄
- 文件屬性
Linux 是一個多用戶系統(tǒng),不同的用戶有不同的權(quán)限,不同用戶訪問同一個文件有不同的權(quán)限
文件有9個屬性(3+3+3 每個屬組下有三個r,w,x 權(quán)限):
r:讀
w:寫
x:可執(zhí)行
文件有屬于哪個組:
U: user
G: groups
O: others
更改權(quán)限和屬組:
chgrp # 更改文件屬組
chown # 更改文件屬主
chmod # 更改屬性
- 文件操作
touch # 創(chuàng)建
rm # 銷毀
vim/vi # 編輯
cp # 復(fù)制
mv # 一點(diǎn)或者重命名
cat # 查看
tac # 倒序查看
nl # 顯示行號
tail # 顯示末尾幾行
head # 顯示開頭幾行
wc # 統(tǒng)計行和字?jǐn)?shù)
more # 一頁一頁顯示
- 網(wǎng)絡(luò)管理
ifconfig # 查看網(wǎng)絡(luò)和網(wǎng)口信息
ping # 判斷網(wǎng)段是否聯(lián)通
traceroute/ tracepath # 路由跟蹤
host # DNS查詢
ifdown/ifup # 關(guān)閉和開啟網(wǎng)口
netstat # 顯示網(wǎng)絡(luò)接口統(tǒng)計信息
- 磁盤管理
df #列出文件系統(tǒng)的整體磁盤使用量
du #檢查磁盤空間使用量
fdisk #磁盤分區(qū)
- 用戶管理
useradd # 添加
userdel # 刪除
sudo user # 用戶切換
passwd # 密碼管理和更改
shell
vim 操作
查詢命令幫助文檔: man command --help
大概是分這個入門型的幾類,回過頭來看看Linux 相關(guān)書籍的目錄,其實基礎(chǔ)講解也幾乎是這些東西。
- 登入遠(yuǎn)程主機(jī)方式
工具: VNC, SecureCRT,Xshell,Putty
Docker

是什么
應(yīng)用容器引擎,做什么
允許開發(fā)者將應(yīng)用程序和配置等信息進(jìn)行打包到容器中,移植到一個其他的生產(chǎn)環(huán)境下,可以正常運(yùn)行。思想是
docker 原意是碼頭工人,碼頭有集裝箱,幾本的思想是將物件通過集裝箱運(yùn)輸?shù)狡渌胤?,而保持物品的完整性,可以正常使用?. 封裝性 2. 一致性 3. 移植性
- 包含哪些
1. images : 鏡像
2. 容器
3. 倉庫
鏡像和容器的關(guān)系就相當(dāng)于程序設(shè)計中的類和實例的關(guān)系,倉庫完成的任務(wù)對鏡像的遠(yuǎn)程管理和存儲。
- 基本的命令
docker images # 查詢主機(jī)上鏡像信息
docker ps # 查詢主機(jī)上運(yùn)行的容器
docker run ubuntu # 運(yùn)行容器
docker stop sha # 停止容器運(yùn)行
docker info # 查詢?nèi)萜髡w信息
docker version # 版本信息
docker pull python # 從遠(yuǎn)程倉庫拉去鏡像,可以指定鏡像倉庫地址,國內(nèi)比較好的是網(wǎng)易蜂巢
docker run --help # 查看run 指令的幫助文檔
docker build -t name . # 制作鏡像
Ansible

- 是什么
一套比較新的集成了眾多優(yōu)秀自動化運(yùn)維的自動化運(yùn)維工具.
實現(xiàn)的是在本機(jī)上完成遠(yuǎn)程主機(jī)上的自動化部署,命令執(zhí)行,查詢,部署等操作。
- 包含什么
1. ad-hoc # 執(zhí)行命令的方式
2. playbook # 按劇本操作執(zhí)行自動化部署等命令
這兩者的區(qū)別是: 相當(dāng)于ad-hoc 是敲shell 命令行的這種,playbook 則是編寫yml 文件,在里面按順序執(zhí)行命令
- 框架組成
1. 主機(jī)清單
2. playbook
3. 連接工具
4. 模塊
5. ansible core
- 各部件的作用
hosts 清單: 遠(yuǎn)程主機(jī)的集中管理,其實就是遠(yuǎn)程主機(jī)IP地址的集合
比如下面這個簡易的hosts文件
[local]
10.62.99.17
[PAAS]
10.62.60.129
10.62.60.64
playbook: 主要是遵從yaml 標(biāo)記語言順序執(zhí)行
---
- hosts: local
remote_user: root
tasks:
- name : print docker images
shell: docker images
連接工具: 本地主機(jī)和遠(yuǎn)程主機(jī)通過SSH協(xié)議連接,安全性能有保障
ssh 常用操作
1. 連接主機(jī)
ssh root@10.62.60.129
2. 生成秘鑰
ssh-keygen -t rsa
3. 將本機(jī)公鑰添加到遠(yuǎn)程主機(jī)上
ssh-copy-id -i ~/.ssh/id_rsa.pub rot@10.62.60.129
模塊: 包含兩個部分:內(nèi)置和自己開發(fā)的模塊
常用的模塊:
copy # 復(fù)制文件
file # 文件操作
command # 命令
shell
ping
yum/apt # 安裝模塊
service # 服務(wù)模塊
- 命令實例: ad-hoc
- m : 接模塊名稱
- a : 接模塊需要添加的參數(shù)信息
1. 判斷遠(yuǎn)程主機(jī)是否網(wǎng)絡(luò)連通
ansible all -m ping
2. 判斷遠(yuǎn)程主機(jī)docker服務(wù)是否開啟
ansible PAAS -m service -a "name=docker state=started"
3. 查詢遠(yuǎn)程主機(jī)鏡像信息
ansible PAAS -m shell -a "docker images"
4. 把管理主機(jī)的某個文件移植到遠(yuǎn)程主機(jī)指定文件夾下
ansible PAAS -m copy -a "src= dest="
5. 查詢命令帶的key 參數(shù)有哪些
ansible-doc -s copy
3. 問題和改進(jìn)
- 學(xué)習(xí)知識
入門簡單,熟練使用需要靠時間,精通需要靠刻意練習(xí)
- 對標(biāo)
學(xué)習(xí)經(jīng)常會需要解決的問題是什么,所以經(jīng)常需要對標(biāo),即:寫明需要解決的問題,對照你現(xiàn)在查詢或者正在解決的方式是不是向著問題被解決的方向進(jìn)行著...
- 對齊
同時間段入職的人培養(yǎng)計劃依照的是團(tuán)隊的需求進(jìn)行的,但其實整體需要掌握的技能是差不多的,所以在學(xué)有余力的情況下,參照別人的培養(yǎng)計劃,填補(bǔ)相應(yīng)的知識
- 早準(zhǔn)備
遇到的問題,其實有很多東西難以徹底搞清楚, 想搞清楚往往發(fā)現(xiàn)會是一個龐大的體系。好,為解決這個問題,多問為什么,比如:是什么; 是在解決什么問題; 怎么做?
- 反復(fù)確認(rèn)
反復(fù)確認(rèn)不是問相同的問題,而是從問題的不同方面確定你聽到的和領(lǐng)導(dǎo)表達(dá)的是沒有差錯的。
- 記錄
第一,你沒經(jīng)驗
第二,你接收信息能力弱
第三,你需要信息整合能力