在DigitalOcean玩Kubernetes(K8S)
DigitalOcean資源來自GitHub學(xué)生包,順便安利→[GitHub-學(xué)生資源]
非學(xué)生用戶可嘗試邀請(qǐng)鏈接,可獲得$100有效期60天,玩一次K8S耍耍:m.do.co/c/beff865d1…
tip: 要用信用卡或PayPal先充個(gè)$5才能激活贈(zèng)送的$100
DigitalOcean簡(jiǎn)介
DigitalOcean也是一款云服務(wù)的供應(yīng)商,目前提供功能
- Droplets 類似阿里云的云服務(wù)器ECS
- Kubernetes 大名鼎鼎的K8S
- Volumes 塊存儲(chǔ)卷,用于增加服務(wù)器存儲(chǔ)
- Databases 數(shù)據(jù)庫(kù)
- Spaces 對(duì)象存儲(chǔ)
- Images 鏡像
- Networking 網(wǎng)絡(luò)
- Monitoring 監(jiān)控
- API
目前自己玩linux服務(wù)器推薦Droplets,支持位置大都為國(guó)外的,在一些開發(fā)包的下載和Docker鏡像拉取的時(shí)候可以輕松一點(diǎn),省得改配置
手動(dòng)搭建
1. 創(chuàng)建項(xiàng)目
如圖左側(cè)選擇New Project,填好項(xiàng)目名稱和介紹并選擇使用目的,這里做手動(dòng)搭建K8S練習(xí)故選了Educational purposes 創(chuàng)建成功,資源移動(dòng)如果沒有的話可以選擇skip跳過 OK跳轉(zhuǎn)到項(xiàng)目頁(yè)面,接下來來搞Droplet服務(wù)器2. Droplet
由于要求為手動(dòng)搭建并且有不同的內(nèi)存需求,這里分兩次來創(chuàng)建Droplets
2.1 master
系統(tǒng)
一臺(tái)作為master的機(jī)子,系統(tǒng)要求CentOS 7,故選擇CentOS,然后選擇版本,默認(rèn)為7.6 x64,妥
內(nèi)存
要求至少3G
如果要多CPU的話可以選更后面的,不過價(jià)格請(qǐng)自行平衡(當(dāng)然有送$100的朋友可以不考慮這個(gè)問題backups和block storage目前沒有要求,先跳過
地域和附加選項(xiàng)
請(qǐng)選擇訪問速度比較快的(可以先等搭建完成之后去ping,速度慢的話銷毀掉再換一臺(tái),也可以網(wǎng)上找測(cè)速網(wǎng))
一般推薦NewYork、SanFrancisco或Singapore
附件選項(xiàng)推薦開啟私有網(wǎng)絡(luò)(內(nèi)網(wǎng))、ipv6和監(jiān)控,內(nèi)網(wǎng)也能方便后續(xù)環(huán)境的配置
SSH和服務(wù)器名
SSH考慮安全性可以使用,自行選擇
名稱本臺(tái)機(jī)子推薦包含master,到時(shí)候區(qū)分master和node方便一些,tags自選,項(xiàng)目就選擇剛剛創(chuàng)建的名稱,這里使用的K8S
OK, Create
創(chuàng)建完成會(huì)受到郵件提示
此處會(huì)包含服務(wù)器ip、用戶名密碼,請(qǐng)使用XShell等工具進(jìn)行連接,第一次連接會(huì)要求修改密碼,后面就可以正常使用了
Node
其他配置基本相同,只是Plan中可選擇2G內(nèi)存減小開支
特別提醒,請(qǐng)先測(cè)試master的連通性和訪問速度正常再創(chuàng)建node,盡量選擇相同的地域配置減少訪問延遲
名稱使用node來區(qū)別,數(shù)量選擇2(名稱后面搭建的時(shí)候改成了node1和node2,若有出入可通過hostnamectl set-hostname nodeNumber對(duì)應(yīng)修改每臺(tái)服務(wù)器名)
OK, Create
至此,3臺(tái)基礎(chǔ)的服務(wù)器就開起來了連接也測(cè)試完畢,推薦使用XShell存?zhèn)€收藏,方便使用
環(huán)境搭建
Docker && Git
先搭建Docker和Git:juejin.im/post/5cac06…
添加hosts
先記錄下幾臺(tái)機(jī)子的ip(推薦使用內(nèi)網(wǎng)環(huán)境),添加hosts
cat >> /etc/hosts <<EOF 10.138.230.86 master master 10.138.150.111 node1 node1 10.138.230.128 node2 node2 EOF 復(fù)制代碼 useradd –m docker ssh-keygen -t rsa ssh-copy-id root@master ssh-copy-id root@node1 ssh-copy-id root@node2復(fù)制代碼部署過程有點(diǎn)復(fù)雜不好記錄啊orz
五一爆肝,總算搭起來了,先報(bào)個(gè)平安orz
以下為使用DigitalOcean的K8S服務(wù),可以直接獲得k8s的nodes(未完,待補(bǔ)充)
DO-Kubernetes初試
簡(jiǎn)介
把K8S做成云服務(wù)器集群服務(wù),當(dāng)成DO平臺(tái)的一款服務(wù)來租賃使用,免去自己購(gòu)買服務(wù)器配置集群的不便
自動(dòng)部署 (暫緩)
1. Create a cluster 創(chuàng)建集群
1.1 Select a Kubernetes version 選擇K8S版本
選了個(gè)新版
- 1.13.5-do.1
- 1.12.7-do.1
- 1.11.9-do.1
1.2 Choose a datacenter region 選擇數(shù)據(jù)中心地域
- 自行參考測(cè)速報(bào)告,挑個(gè)自己訪問延遲低的(可以多次嘗試,速度不行就delete,按服務(wù)器運(yùn)行時(shí)間算開銷的)
- 服務(wù)器地域可能有unavailable的,請(qǐng)選擇其他可用的地域
- New York 1 / 2 / 3
- Amsterdam 1 / 2 / 3
- San Francisco 1 / 2
- Singapore 1
- London 1
- Frankfurt 1
- Toronto 1
- Bangalore 1
1.3 Add node pool(s) 添加結(jié)點(diǎn)池
結(jié)點(diǎn)配置可靈活調(diào)整,個(gè)人學(xué)習(xí)用就挑最便宜的了(有$100的可以選擇高配揮霍一下:D)
- Standard nodes: Balanced with a healthy amount of memory
- $10/Month per node ($0.015/hr): 2 GB Memory / 1 vCPU
- $20/Month per node ($0.030/hr): 4 GB Memory / 2 vCPUs
- Flexible nodes: Plans with the same price and varying resources
- $15/Month per node ($0.022/hr): 1 GB Memory / 3 vCPUs
- $15/Month per node ($0.022/hr): 2 GB Memory / 2 vCPUs
- $15/Month per node ($0.022/hr): 3 GB Memory / 1 vCPU
畢竟是集群,好歹搞個(gè)3個(gè)結(jié)點(diǎn)玩玩:3 Nodes
有條件的話還可以試試添加多個(gè)結(jié)點(diǎn)池orz
1.4 Add Tags 給集群添加標(biāo)簽
相當(dāng)于給集群分個(gè)組,便于管理
1.5 Choose a name 給集群命名
默認(rèn)命名會(huì)自動(dòng)組合版本和地域,加上一串自動(dòng)生成的數(shù)字ID,格式參考:k8s-1-13-5-do-1-sfo2-xxxxxxxxxxxxx
Create Cluster
去吧K8S! ( 咳咳,為避免消耗太多還是等課程開講了再點(diǎn)確定吧orz )
以下內(nèi)容可以照著DO的教程走,這里僅作記錄
0. 找一臺(tái)服務(wù)器,創(chuàng)建工作目錄(這里使用的是DO-CentOS-SFO2)
mkdir ~/.kube cd ~/.kube 復(fù)制代碼1. CentOS 安裝kubectl
如選擇了其他版本的系統(tǒng)請(qǐng)查看官方的安裝文檔:kubernetes.io/docs/tasks/…
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF yum install -y kubectl 復(fù)制代碼2. 下載配置文件并傳輸?shù)焦ぷ髂夸?/h4> > 使用XShell的話推薦`yum install -y lrzsz`之后直接鼠標(biāo)拖入即可 復(fù)制代碼
3. 測(cè)試連接
kubectl --kubeconfig="(Your Config File).yaml" get nodes 復(fù)制代碼若返回結(jié)點(diǎn)信息即說明連接成功:
NAME STATUS ROLES AGE VERSION pool-6wma2****-qbr8 Ready <none> 12m v1.13.5 pool-6wma2****-qbrc Ready <none> 12m v1.13.5 pool-6wma2****-qbru Ready <none> 12m v1.13.5 復(fù)制代碼4. 部署Workload
添加文件及內(nèi)容并丟入vim nginx.yaml,name和app名可自行修改
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: library/nginx 復(fù)制代碼以之前的配置文件來執(zhí)行指定文件的create操作
kubectl --kubeconfig="(Your Config File).yaml" create -f ./nginx.yaml 復(fù)制代碼返回deployment.apps/nginx created即操作成功
同理
[root@centos-s-1vcpu-1gb-sfo2-01 .kube]# vim cronjob.yaml [root@centos-s-1vcpu-1gb-sfo2-01 .kube]# vim pod.yaml [root@centos-s-1vcpu-1gb-sfo2-01 .kube]# vim replicaSet.yaml [root@centos-s-1vcpu-1gb-sfo2-01 .kube]# kubectl --kubeconfig="(Your Config File).yaml" create -f ./cronjob.yaml cronjob.batch/cronjob-example created [root@centos-s-1vcpu-1gb-sfo2-01 .kube]# kubectl --kubeconfig="(Your Config File).yaml" create -f ./pod.yaml pod/nginx-pod-example created [root@centos-s-1vcpu-1gb-sfo2-01 .kube]# kubectl --kubeconfig="(Your Config File).yaml" create -f ./replicaSet.yaml replicaset.apps/nginx-replicaset-example created 復(fù)制代碼cronjob.yaml
apiVersion: batch/v1beta1 kind: CronJob metadata:name: cronjob-example spec:schedule: '*/5 * * * *'jobTemplate:spec:template:spec:containers:- name: cronjob-exampleimage: busyboxargs:- /bin/sh- '-c'- echo This is an example cronjob running every five minutesrestartPolicy: OnFailure 復(fù)制代碼pod.yaml
apiVersion: v1 kind: Pod metadata:name: nginx-pod-example spec:containers:- name: nginx-pod-exampleimage: library/nginx 復(fù)制代碼replicaSet.yaml
apiVersion: apps/v1 kind: ReplicaSet metadata:name: nginx-replicaset-example spec:replicas: 1selector:matchLabels:app: nginx-replicaset-exampletemplate:metadata:labels:app: nginx-replicaset-examplespec:containers:- name: nginx-replicaset-exampleimage: library/nginx 復(fù)制代碼然后就得自己看文檔了: kubernetes.io/docs/tasks/…
嘗試運(yùn)行Nginx
[root@centos-s-1vcpu-1gb-sfo2-01 .kube]# kubectl --kubeconfig="(Your Config File).yaml" describe deployment nginx Name: nginx Namespace: default CreationTimestamp: Mon, 29 Apr 2019 02:31:18 +0000 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 Selector: app=nginx Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template:Labels: app=nginxContainers:nginx:Image: library/nginxPort: <none>Host Port: <none>Environment: <none>Mounts: <none>Volumes: <none> Conditions:Type Status Reason---- ------ ------Available True MinimumReplicasAvailableProgressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: nginx-5fd59fd4f (1/1 replicas created) Events:Type Reason Age From Message---- ------ ---- ---- -------Normal ScalingReplicaSet 15m deployment-controller Scaled up replica set nginx-5fd59fd4f to 1 復(fù)制代碼查看運(yùn)行狀態(tài)
[root@centos-s-1vcpu-1gb-sfo2-01 .kube]# kubectl --kubeconfig="(Your Config File).yaml" get pods -l app=nginx NAME READY STATUS RESTARTS AGE nginx-5fd59fd4f-nm8nd 1/1 Running 0 17m 復(fù)制代碼[root@centos-s-1vcpu-1gb-sfo2-01 .kube]# kubectl --kubeconfig="(Your Config File).yaml" get pods -o wide|grep nginx nginx-5fd59fd4f-nm8nd 1/1 Running 0 30m 10.244.2.47 pool-6wma2j9kg-qbr8 <none> <none> nginx-deployment-example-5b7b75dc46-6xn8s 1/1 Running 0 55m 10.244.1.36 pool-6wma2j9kg-qbrc <none> <none> nginx-pod-example 1/1 Running 0 21m 10.244.1.250 pool-6wma2j9kg-qbrc <none> <none> nginx-replicaset-example-qxdpj 1/1 Running 0 21m 10.244.2.128 pool-6wma2j9kg-qbr8 <none> <none> 復(fù)制代碼轉(zhuǎn)載于:https://juejin.im/post/5caa00346fb9a05e677e8c52
總結(jié)
以上是生活随笔為你收集整理的在DigitalOcean玩Kubernetes(K8S)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARTS训练第三周
- 下一篇: 【机器学习基础】--感知机完全解读