鯤鵬彈性云服務器開發環境搭建
鯤鵬彈性云服務器對容器的支持很出色,能很好地支持基礎容器、系統容器以及
應用容器。
基礎容器如Snap,系統容器如Lxd,應用容器如Docker,在云時代,這三
者配合好,可以搭建出不錯的開發環境,也就是一朵小而美開發測試云,為開發
者所用。
你是一名開發者嗎?你的開發環境如何?你有沒有一朵自己的開發測試云?
你想在鯤鵬上做一些開發嗎?
請跟我來。
前期準備
在鯤鵬社區年度盛典,實名認證用戶可以免費得到15天鯤鵬彈性云服務器試用
的優惠。
你可以免費得到一臺:
操作系統選:Ubuntu 18.04,安全端口打開:8443。
基礎容器
Ubuntu 18.04?Snap已經裝好。
我們可以用Snap安裝配置一個Go來用:
snap?install?go?--classic cat?>?/etc/profile.d/go.sh?<
我習慣把GOPATH設置為/usr/local,這樣Go的安裝包源碼就在
/usr/local/src, 可執行文件在/usr/local/bin。一般的系統
/usr/local/bin都在PATH,這就省了一點設置的麻煩。
這樣Go就好了:
go?version?#=> go?version?go1.13.5?linux/arm64
裝一個dlv測試一下:
go?get?github.com/go-delve/delve/cmd/dlv
這樣就得到了一個Go的開發測試環境。
或許,一個沒有Emacs的系統,稱不上開發測試環境:
snap?install?emacs?--classsic
系統容器
這一節我們探探系統容器云lxd的安裝配置以及使用。
安裝
lxd在Ubuntu apt源里有,而且默認Ubuntu 18.04已經安裝,不過版本是3.01,太低不合適用。我們需要用Snap Store里的版本3.18。
先卸載:
which?lxd?#=> /usr/bin/lxd apt-get?purge?lxd?lxd-client
安裝lxd:
snap?install?lxd
配置
配置:
lxd?init?--auto?\ ????--storage-backend=zfs?\ ????--storage-create-device=/dev/vdb?\ ????--storage-pool=default?\ ????--network-port=8443?\ ????--network-address=你的IP ????--trust-password=你的密碼?\
注意:
/dev/vdb是你的100G數據盤,
8443是遠程服務端口,需要加入安全組,
密碼要強一些。
這樣就得到了一個系統容器云。
lxd的磁盤鏡像在國外,這在國內使用會非常非常慢。不過我們可以把國內的鏡像給加上。
華為的鏡像同步在:
https://repo.huaweicloud.com/ubuntu-cloud-images/releases/
不過由于一些原因(比如華為人比較傻,粗心,或者不勤奮),這個鏡像源同步的不對。我已在論壇開帖索要,讓我們拭目以待。
好在騰訊云有可用的鏡像:
https://mirrors.cloud.tencent.com/ubuntu-cloud-images/releases/
把這個鏡像加上:
lxc?remote?add?ubuntu2?\ ??https://mirrors.cloud.tencent.com/ubuntu-cloud-images/releases/?\ ??--protocol=simplestreams?\ ??--public
這樣有了一個名為ubuntu2的磁盤鏡像源。以下會以剛定義的鏡像源ubuntu2為例子簡單說說使用。
使用
lxd客戶端叫lxc。這里lxc不是linux container而是lxd client的意思。
起:
lxc?launch?ubuntu2:18.04?dev01
停:
lxc?stop?dev01
刪:
lxc?delete?dev01
系統容器可以重啟。你可以在容器里執行:
shutdown?-r?now
或者用lxc:
lxc?reboot?dev01
來進行重啟。
系統容器重啟和虛機類似。這一點和應用容器有很大區別。在應用容器如Docker
里,根本沒有重啟的概念,重啟等于刪除然后重新創建。這對于開發環境是不能
接受的。其實不光對開發環境,對有狀態應用比如數據庫應用也不可接受。于是
Kubernetes引入有狀態集和持久化卷來彌補這一點。
回到Lxd的使用。
lxc?exec?dev01?--?bash?-l
這就進到容器里了,可以做任何操作。
exec是Lxd的一個撒手锏功能,非常好用。在lxd3.19可能引入的KVM支持,
lxc launch可以起虛機,lxc exec就可以非常方便地進到虛機里。
遠程訪問
Lxd可以遠程訪問。
找到鯤鵬彈性云服務器公網ip,把8443加入安全組。
在本地裝好lxc,然后運行:
lxc?remote?add?dev?https://
應用容器
Snap里有大量的優質應用,如Go,如lxd,如microk8s。
Lxd是系統容器。系統容器做操作系統能做的事。
系統容器里能運行什么?當然可以運行snap。
lxc?launch?ubuntu2:18.04?microk8s?-c?security.nesting=true lxc?exec?microk8s?--?bash?-l snap?install?microk8s?--classic
這樣一個kubernetes就搭建好了。當然microk8s可以建集群。
lxd里可以跑Docker,這和在虛機里沒啥區別,不述。
Snap里還有prometheus, grafana, postgres,等等大量的優質應用。一般地,
相比較傳統包管理,如deb,rpm,snap里的應用版本更新,維護更及時。這是
由Snap的設計決定的。
應用源碼變更,打包為snap,會一次進入edge, beta, candidate, 最后進入
stable。用戶安裝snap的時候,可以前進,可以回滾。安裝應用裝載鏡像,不會
搞亂主機文件系統。
MicroK8S集群搭建
MicroK8S用lxd搭建有一些權限相關的注意事項,這些注意事項細碎,容易出錯。不過我們可以把這些注意事項都寫到lxd的profile里去。
microk8s?profile
從default拷貝microk8s:
lxc?profile?copy?default?microk8s
編輯microk8s:
lxc?profile?edit?microk8s
需要填入的內容如下:
config: ??boot.autostart:?"true" ??linux.kernel_modules:?ip_tables,ip6_tables,netlink_diag,nf_nat,overlay ??raw.lxc:?"lxc.apparmor.profile=unconfined\nlxc.cap.drop=\nlxc.cgroup.devices.allow=a\nlxc.mount.auto=proc:rw?? ?sys:rw" ??security.nesting:?"true" ??security.privileged:?"true" ??user.user-data:?| ????#cloud-config ????locale:?en_US.UTF-8 ????write_files: ??????-?content:?L?/dev/kmsg?-?-?-?-?/dev/console ????????path:?/etc/tmpfiles.d/kmsg.conf ????runcmd: ??????-?[?systemd-tmpfiles,?--create?] description:?MicroK8s?profile
這樣我們創建的lxd容器權限足以部署microk8s。另外我們利用cloud-init把設備/dev/kmsg鏈接到/dev/console,這是microk8s部署所要求的。
創建3節點
lxc?launch?--profile?microk8s?ubuntu2:18.04?micro01 lxc?launch?--profile?microk8s?ubuntu2:18.04?micro02 lxc?launch?--profile?microk8s?ubuntu2:18.04?micro03
把microXX寫入本機/etc/hosts:
lxc?list?-c4n?micro?--format?csv?|?sed?'s/(.*),//g'?>>?/etc/hosts
把microXX寫入每個節點/etc/hosts:
for?n?in?micro0{1..3};?do? ????cat?/etc/hosts?|?grep?micro0?|?lxc?exec?$n--?bash?-c?"cat?>>?/etc/hosts" done
為每個節點配ssh訪問:
for?n?in?micro0{1..3};?do? ????lxc?file?push?~/.ssh/id_rsa.pub?$n/root/.ssh/authorized_keys done
實際上就是把本機id_rsa.pub拷貝到每個節點的authorized_keys。這樣就可以ssh無密碼訪問了。如本機沒有id_rsa.pub可以用ssh-keygen生成一下。
安裝microk8s
for?n?in?micro0{1..3};?do? ????lxc?exec?$n?--?bash?-c?"snap?install?microk8s?--classic" done
組集群
在第一個節點:
lxc?exec?micro01?--?bash?-c?microk8s.add-node?#=> Join?node?with:?microk8s.join?10.187.55.119:25000/eveWKKNtRamCGnrdaGNFRuXQIRwAAFmz
在其他節點:
lxc?exec?micro02?--?bash?-c?"microk8s.join?10.187.55.119:25000/eveWKKNtRamCGnrdaGNFRuXQIRwAAFmz" lxc?exec?micro03?--?bash?-c?"microk8s.join?10.187.55.119:25000/eveWKKNtRamCGnrdaGNFRuXQIRwAAFmz"
至此microk8s集群搭建完畢:
NAME??????STATUS???ROLES????AGE????VERSION micro01???Ready????
鯤鵬 容器 彈性云服務器 ECS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。