在DigitalOcean玩Kubernetes(K8S)
DigitalOcean資源來自GitHub學生包,順便安利→[GitHub-學生資源]
非學生用戶可嘗試邀請鏈接,可獲得$100有效期60天,玩一次K8S耍耍:m.do.co/c/beff865d1…
tip: 要用信用卡或PayPal先充個$5才能激活贈送的$100
DigitalOcean簡介
DigitalOcean也是一款云服務的供應商,目前提供功能
- Droplets 類似阿里云的云服務器ECS
- Kubernetes 大名鼎鼎的K8S
- Volumes 塊存儲卷,用于增加服務器存儲
- Databases 數據庫
- Spaces 對象存儲
- Images 鏡像
- Networking 網絡
- Monitoring 監控
- API
目前自己玩linux服務器推薦Droplets,支持位置大都為國外的,在一些開發包的下載和Docker鏡像拉取的時候可以輕松一點,省得改配置
手動搭建
1. 創建項目
如圖左側選擇New Project,填好項目名稱和介紹并選擇使用目的,這里做手動搭建K8S練習故選了Educational purposes 創建成功,資源移動如果沒有的話可以選擇skip跳過 OK跳轉到項目頁面,接下來來搞Droplet服務器2. Droplet
由于要求為手動搭建并且有不同的內存需求,這里分兩次來創建Droplets
2.1 master
系統
一臺作為master的機子,系統要求CentOS 7,故選擇CentOS,然后選擇版本,默認為7.6 x64,妥
內存
要求至少3G
如果要多CPU的話可以選更后面的,不過價格請自行平衡(當然有送$100的朋友可以不考慮這個問題backups和block storage目前沒有要求,先跳過
地域和附加選項
請選擇訪問速度比較快的(可以先等搭建完成之后去ping,速度慢的話銷毀掉再換一臺,也可以網上找測速網)
一般推薦NewYork、SanFrancisco或Singapore
附件選項推薦開啟私有網絡(內網)、ipv6和監控,內網也能方便后續環境的配置
SSH和服務器名
SSH考慮安全性可以使用,自行選擇
名稱本臺機子推薦包含master,到時候區分master和node方便一些,tags自選,項目就選擇剛剛創建的名稱,這里使用的K8S
OK, Create
創建完成會受到郵件提示
此處會包含服務器ip、用戶名密碼,請使用XShell等工具進行連接,第一次連接會要求修改密碼,后面就可以正常使用了
Node
其他配置基本相同,只是Plan中可選擇2G內存減小開支
特別提醒,請先測試master的連通性和訪問速度正常再創建node,盡量選擇相同的地域配置減少訪問延遲
名稱使用node來區別,數量選擇2(名稱后面搭建的時候改成了node1和node2,若有出入可通過hostnamectl set-hostname nodeNumber對應修改每臺服務器名)
OK, Create
至此,3臺基礎的服務器就開起來了連接也測試完畢,推薦使用XShell存個收藏,方便使用
環境搭建
Docker && Git
先搭建Docker和Git:juejin.im/post/5cac06…
添加hosts
先記錄下幾臺機子的ip(推薦使用內網環境),添加hosts
cat >> /etc/hosts <<EOF 10.138.230.86 master master 10.138.150.111 node1 node1 10.138.230.128 node2 node2 EOF 復制代碼 useradd –m docker ssh-keygen -t rsa ssh-copy-id root@master ssh-copy-id root@node1 ssh-copy-id root@node2復制代碼部署過程有點復雜不好記錄啊orz
五一爆肝,總算搭起來了,先報個平安orz
以下為使用DigitalOcean的K8S服務,可以直接獲得k8s的nodes(未完,待補充)
DO-Kubernetes初試
簡介
把K8S做成云服務器集群服務,當成DO平臺的一款服務來租賃使用,免去自己購買服務器配置集群的不便
自動部署 (暫緩)
1. Create a cluster 創建集群
1.1 Select a Kubernetes version 選擇K8S版本
選了個新版
- 1.13.5-do.1
- 1.12.7-do.1
- 1.11.9-do.1
1.2 Choose a datacenter region 選擇數據中心地域
- 自行參考測速報告,挑個自己訪問延遲低的(可以多次嘗試,速度不行就delete,按服務器運行時間算開銷的)
- 服務器地域可能有unavailable的,請選擇其他可用的地域
- 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) 添加結點池
結點配置可靈活調整,個人學習用就挑最便宜的了(有$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
畢竟是集群,好歹搞個3個結點玩玩:3 Nodes
有條件的話還可以試試添加多個結點池orz
1.4 Add Tags 給集群添加標簽
相當于給集群分個組,便于管理
1.5 Choose a name 給集群命名
默認命名會自動組合版本和地域,加上一串自動生成的數字ID,格式參考:k8s-1-13-5-do-1-sfo2-xxxxxxxxxxxxx
Create Cluster
去吧K8S! ( 咳咳,為避免消耗太多還是等課程開講了再點確定吧orz )
以下內容可以照著DO的教程走,這里僅作記錄
0. 找一臺服務器,創建工作目錄(這里使用的是DO-CentOS-SFO2)
mkdir ~/.kube cd ~/.kube 復制代碼1. CentOS 安裝kubectl
如選擇了其他版本的系統請查看官方的安裝文檔: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 復制代碼2. 下載配置文件并傳輸到工作目錄
> 使用XShell的話推薦`yum install -y lrzsz`之后直接鼠標拖入即可 復制代碼3. 測試連接
kubectl --kubeconfig="(Your Config File).yaml" get nodes 復制代碼若返回結點信息即說明連接成功:
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 復制代碼4. 部署Workload
添加文件及內容并丟入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 復制代碼以之前的配置文件來執行指定文件的create操作
kubectl --kubeconfig="(Your Config File).yaml" create -f ./nginx.yaml 復制代碼返回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 復制代碼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 復制代碼pod.yaml
apiVersion: v1 kind: Pod metadata:name: nginx-pod-example spec:containers:- name: nginx-pod-exampleimage: library/nginx 復制代碼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 復制代碼然后就得自己看文檔了: kubernetes.io/docs/tasks/…
嘗試運行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 復制代碼查看運行狀態
[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 復制代碼[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> 復制代碼轉載于:https://juejin.im/post/5caa00346fb9a05e677e8c52
總結
以上是生活随笔為你收集整理的在DigitalOcean玩Kubernetes(K8S)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARTS训练第三周
- 下一篇: 【机器学习基础】--感知机完全解读