一個屌絲靠阿里云逆襲的故事

我是一個屌絲,沒讀過大學.資深網管.后面自學阿里云完成了從網吧網管到企業(yè)運維的轉變,我之前在杭州工商大學的紅蘋果網吧做網管的.后面去過杭州大劇院.數字銀行.銀聯.最后在外資公司待著.一路走來多虧有好心人的幫忙.最近有意轉行.直到有一天聽說了阿里云大學才知道原來云計算還可以這么玩.立馬就報名學習了阿里云大學的四門專業(yè)課程.云計算.大數據分析,大數據開發(fā),云計算安全.并且都已經畢業(yè)合格了。不光我自己學了我還鼓動我身邊的人參加學習.

這段時間云計算導師的指導下,終于完成了教學內容的考試,在此特別感謝我們班級那些認真負責的教服人員,感謝他們半夜11點還在跟我們一起討論,因此才有了以下這個文章,大家為我奉獻,我為大家奉獻,希望同行一起交流,包括已經入行的和正在學習的人.因為接觸云計算不多。如果還有表達錯誤的,請多多擔待.

前言

無論是傳統的自建idc還是當前流行的上云,都避免不了在業(yè)務突發(fā)增長,在業(yè)務爆發(fā)增長的情況下.公司對業(yè)務可用性以及穩(wěn)定性的追求,對于許多運維人員來說都是困擾.業(yè)務量少.體現不出價值.業(yè)務量大怕自己沒經驗.幸好有阿里云的云計算課程.教會了我們很多技術手段來應對業(yè)務的爆發(fā)性增長,而對于自建機房來說,這是他們心痛的,沒有相應完好的技術架構來應對業(yè)務的爆發(fā)增長.


我去過一家保險公司.20多個開發(fā)人員2臺ecs.沒有業(yè)務業(yè)務增長.也就不需要橫向擴容.2臺服務器夠用了,這樣的架構對于小企業(yè)來說是沒有什么問題,如果業(yè)務爆發(fā)增長后我們服務器不夠時再買一點,也不在乎那么一點時間和金錢,但是對于依靠互聯網增值業(yè)務來為公司服務的公司來說是不允許的時間就是金錢呀,如果是你的服務中斷了那么老板會跳起來的,你看著辦吧。沒辦法,老板就是那么難伺候,又需要你來給企業(yè)節(jié)省成本。又需要

你給公司節(jié)省成本.這個時候我們的k8s就可以登場了。

那么.什么時候我們才需要用到k8s技術呢?比如說游戲服務器.比如淘寶雙十一的這些訪問量比波動比較大的業(yè)務,可能前一秒鐘有1000人,再訪問下一秒鐘就突破2000w人次了。再這樣訪問量的情況下面總不可能你讓我手工一臺上服務器吧,要這樣的話就不如關門大吉了。所以我們迫切需要運維自動化

阿里云的edas服務控制臺提供自建k8s服務.


技術演示,我們以一臺服務器來做簡單的運行演示,首先我們創(chuàng)建一臺網站服務器的IP v47.101.181.321。

并訪問一下頁面是否正常。


好的,現在一切正常,接下來我們給應該給這些服務器做一個鏡像

這樣后面的話docker調用的時候就會用到,用這個鏡像來做,docker說我們在創(chuàng)建自定義服務器中輸入鏡像名稱,寫好備注后直接點擊創(chuàng)建。

dockerfile命名如下

--------------

FROM node:8

WORKDIR /opt/apps/p8h_backend

COPY package*.json ./

RUN npm install

COPY . .

CMD ["node", "server.js"]

--------------

docker build -f Dockerfile.esbjm ./ -t jim/p8h-esb-qa:1

運行命令就可以生成一個docker images的鏡像. 創(chuàng)建好后.

創(chuàng)建好后,我們在k8s上創(chuàng)建相應的服務.

esb企業(yè)業(yè)務總線

-------------------

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

????name: esb-p8h-esb-dev

????annotations:

??????nginx.ingress.kubernetes.io/proxy-body-size: 600M

spec:

????minReadySeconds: 60

????progressDeadlineSeconds: 600

????replicas: 1

????revisionHistoryLimit: 10

????strategy:

??????rollingUpdate:

????????maxSurge: 2

????????maxUnavailable: 0

??????type: RollingUpdate

????template:

??????metadata:

????????labels:

??????????app: aesbp8h-esb-dev

??????spec:

????????imagePullSecrets:

????????- name: myregistrykey

????????containers:

????????- name: esbp8h-esb-dev

??????????image: jim/p8h-esb-qa:1

??????????resources:

????????????requests:

??????????????memory: "1000Mi"

??????????????cpu: "200m"

??????????ports:

??????????- containerPort: 80

??????????env:

??????????- name: SERVER_TYPE

????????????value: "esb"

??????????- name: REDIS_HOST

????????????value: "prod-redis"

??????????- name: BUILD_ENV

????????????value: "prod"

??????????- name: PORT

????????????value: "80"

---

#mbl移動api

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

????name: mbl-p8h-esb-dev

spec:

????minReadySeconds: 60

????progressDeadlineSeconds: 600

????replicas: 1

????revisionHistoryLimit: 10

????strategy:

??????rollingUpdate:

????????maxSurge: 2

????????maxUnavailable: 0

??????type: RollingUpdate

????template:

??????metadata:

????????labels:

??????????app: amblp8h-esb-dev

??????spec:

????????imagePullSecrets:

????????- name: myregistrykey

????????containers:

????????- name: mblp8h-esb-dev

??????????image: jim/p8h-esb-qa:1

??????????resources:

????????????requests:

??????????????memory: "1000Mi"

??????????????cpu: "200m"

??????????ports:

??????????- containerPort: 80

??????????env:

??????????- name: SERVER_TYPE

????????????value: "mbl"

??????????- name: REDIS_HOST

????????????value: "prod-redis"

??????????- name: BUILD_ENV

????????????value: "prod"

??????????- name: PORT

????????????value: "80"

---

#webapi

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

????name: web-p8h-esb-dev

spec:

????minReadySeconds: 60

????progressDeadlineSeconds: 600

????replicas: 1

????revisionHistoryLimit: 10

????strategy:

??????rollingUpdate:

????????maxSurge: 2

????????maxUnavailable: 0

??????type: RollingUpdate

????template:

??????metadata:

????????labels:

??????????app: awebp8h-esb-dev

??????spec:

????????imagePullSecrets:

????????- name: myregistrykey

????????containers:

????????- name: webp8h-esb-dev

??????????image: jim/p8h-esb-qa:1

??????????resources:

????????????requests:

??????????????memory: "1000Mi"

??????????????cpu: "200m"

??????????ports:

??????????- containerPort: 80

??????????env:

??????????- name: SERVER_TYPE

????????????value: "web"

??????????- name: REDIS_HOST

????????????value: "prdo-redis"

??????????- name: BUILD_ENV

????????????value: "prod"

??????????- name: PORT

????????????value: "80"

-------------------

寫好這個app.yml

運行

rancher kubectl apply -f ~/app.yml

就在k8s上運行好這些業(yè)務了.然后我們再創(chuàng)建一個hpa業(yè)務伸縮實例.實例中。我們根據CPU時間占用率來進行自動伸縮,默認為10,最大為100。當docker cpu利用率超過50%時新建新的容器.其他如果不需要改動,就設置成默認。

-------------

rancher kubectl autoscale deployment esb-p8h-esb-dev --min=1 --max=10 --cpu-percent=80

-------------

下面我們來測試設置的k8s自動伸縮實例是否正常生效?我們來運行一個結jmeter的壓力測試程序。

未生效前我們看到現在k8s集群只有一臺服務器在工作。



生效之后,我們看到已經有兩臺服務器在工作了。



我們再回到ecs控制臺,來看一下服務器的狀態(tài),可以看到之前的實例中只是cpu有些波動.并不需要新購買ecs服務器.但對于我們用戶來說.業(yè)務的負載能力又是真實提升了.而且我們的業(yè)務可以混合部署.比如我們可以買1臺200m帶寬特價的服務器demo.這個服務器上的流量費用特別便宜.然后調用api購買一個競價實例mbl-競價1.這個服務器的cpu內存單價特別低.這樣的話便宜的價格.高效的服務器性能.兩全其美.老板當初教育我.運維人員就是互聯網時代的企業(yè)會計.需要為企業(yè)開源節(jié)流.一個好的運維.公司的隱形支出至少可以節(jié)省一半以上.這個就是我的經驗.





總結在這篇文章中,我們一起學習并討論了什么是k8s,什么情況下使用k8s,最后展示了如何配置和使用k8s。

總結如下,

1.k8s是一個虛擬化的企業(yè)云平臺服務.可以對阿里云提供的ecs資源進行二次劃分.

2.k8s在服務壓力大的情況下會自動伸縮.把不需要的服務關閉掉.把需要的服務進行擴容.以應對高峰期的訪問.

3.k8s有簡單的特點,不需要有過多的操作技術就可以簡單使用。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容