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)相关推荐

  1. 深入玩转K8S之智能化的业务弹性伸缩和滚动更新操作

    在上篇我们讲到了较为傻瓜初级的弹性伸缩和滚动更新,那么接下来我们来看看较为高级的智能的滚动更新.本节的知识点呢是K8S的liveness和readiness探测,也就是说利用健康检查来做更为智能化的弹 ...

  2. 在200元的电视盒子使用sealos玩转K8S

    你是否苦于想搭建k8s测试平台却缺少硬件资源?是否因为公有云平台价格昂贵望而却步?是否因为k8s搭建复杂入门又出门? 今天带给你一条龙方案,仅需200元,就能低成本在家就能玩转k8s.  具体的刷固件 ...

  3. 每天五分钟玩转K8S(一)

    k8s的安装 总体基于<每天5分钟玩转k8s>这本书,主要是里面有些地方容易有坑,所以想将里面可能有坑的地方记录下来,为其他使用这本书的读者可以避免踩坑.(主要是有些坑坑了我好久T_T)博 ...

  4. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  5. 深入剖析Kubernetes k8s

    深入剖析Kubernetes k8s 毫无疑问,Kubernetes 已经成为容器领域当之无愧的事实标准.除了 Google.Microsoft 等技术巨擘们在容器领域里多年的博弈外,国内的 BAT. ...

  6. 02 | 健康之路 kubernetes(k8s) 实践之路 : 生产可用环境及验证

    上一篇< 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况 >我们介绍了我们的大体情况,也算迈出了第一步.今天我们主要介绍下我们生产可用的集群架设方案.涉及了整 ...

  7. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  8. kubernetes(k8s)-介绍2

    kubernetes(k8s)-安装(二) 什么是Kubernetes Kubernetes是一个开源平台,用于跨主机群集自动部署,扩展和操作应用程序容器,提供以容器为中心的基础架构. 使用Kuber ...

  9. Kubernetes(K8S)入门到运维 ( 六) Helm与功能组件及证书年限

    elm与功能性组件 为什么又来一个Helm? 在向K8S部署应用时,要依次部署Deployment.SVC等,步骤多且麻烦,而且随着越来越多的项目微服务化,复杂的应用在容器中部署以及管理就更为复杂了, ...

最新文章

  1. 基于关联规则(Variational Autoencoders)疾病预测系统实战:(pyspark FPGrowth实现频繁项集挖掘、最后给出预测模型topK准确率和召回率)
  2. 有关SQL server connection Keep Alive 的FAQ(2)
  3. BAT在AI领域投资收购大起底:当我们说搞AI时我们要搞些什么?
  4. Redis 高级教程 Redis 安全(2)
  5. 【bzoj3676】
  6. java实现秒杀系统_Java秒杀系统--4.实现秒杀接口
  7. ArcMAP 设置图层透明度
  8. 经典怀旧软件----PP点点通
  9. Nginx基本配置参数说明与文档
  10. 金蝶云星空html5的网页主界面如何修改,金蝶云星空启用科目管控后,科目相关的值更新事件无法生效原因及解决办法...
  11. Description Resource Path Location Type The import collides with another import statement
  12. 谷歌浏览器占CPU非常高的解决办法
  13. 研究B站视频编号含义 - av | ep | md ...
  14. 数学美 之 判断线段相交的最简方法
  15. 计算机三级考哪个容易过关,计算机等级考试三级PC技术过关心得技巧
  16. 小学如何开展创客教育教学工作
  17. 关于第三方登录,你应该知道的
  18. 【详解---彻底卸载电脑上面Adobe软件】
  19. HTB_Weak RSA
  20. 数值计算高斯求积分的解法

热门文章

  1. android web 打印,Android设备WebView打印Console Log
  2. ios点击大头针气泡不弹出_百度地图使用(二)自定义大头针和弹出气泡
  3. php base64_decode 图片,PHP保存Base64图片base64_decode的问题整理
  4. java中构造方法和方法全面解析
  5. 自定义控件:侧拉删除
  6. WebStorm 2019.3.1安装教程
  7. python简单的小程序_初学python的一些简单程序(1)
  8. linux下mysql tmp满_MySQL服务器/tmp目录被占满
  9. java 方法 参数 引用_Java 基础
  10. 一周一论文(翻译 总结)—— [DSN 18] RDMC A Reliable RDMA Multicast for Large Objects :一个面向大型对象的可靠的RDMA广播框架