k8s快速入门

1.快速创建k8s集群

参考网站:https://kubernetes.io/docs/tutorials/kubernetes-basics

点击教程菜单 1. Create a Cluster -> Interactive Tutorial - Creating a Cluster

note:通过 Kubernetes 的命令行工具 kubectl 远程管理集群
  • minikube start 创建集群
  • kubectl cluster-info 查看集群信息
Kubernetes master is running at https://172.17.0.15:8443
KubeDNS is running at https://172.17.0.15:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  • kubectl get nodes 查看节点信息
NAME       STATUS   ROLES    AGE     VERSION
minikube   Ready    master   2m53s   v1.13.3

2.部署应用

kubectl run kubernetes-bootcamp  --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080

显示信息
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/kubernetes-bootcamp created

这里我们通过 kubectl run 部署了一个应用,命名为 kubernetes-bootcamp
--image 指定Docker 镜像
--port 设置应用对外服务的端口

3.访问应用

默认情况下,所有 Pod只能在集群内部访问。为了能够从外部访问应用,我们需要将容器的 8080 端口映射到节点的端口。

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080

显示信息
service/kubernetes-bootcamp exposed

查看services及对应的映射端口

kubectl get services

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.96.0.1        <none>        443/TCP          9m47s
kubernetes-bootcamp   NodePort    10.105.140.245   <none>        8080:31048/TCP   82s

kubernetes 是默认的 service,暂时不用考虑。kubernetes-bootcamp 是我们应用的 service,8080 端口已经映射到 host01 的 31048 端口,端口号是随机分配的

通过curl命令进行访问

curl host01:30393
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-ccqz7 | v=1

4.Scale 应用

默认情况下应用只会运行一个副本,可以通过 kubectl get deployments查看副本数。

kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           2m

增加副本个数

kubectl scale deployments/kubernetes-bootcamp --replicas=3
deployment.extensions/kubernetes-bootcamp scaled

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   3/3     3            3           2m34s

减少副本个数

$ kubectl scale deployments/kubernetes-bootcamp --replicas=1
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           3m51s

$ kubectl get pods
NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-6c5cfd894b-9cn54   1/1     Running   0          41s
kubernetes-bootcamp-6c5cfd894b-ccqz7   1/1     Running   0          4m44s
kubernetes-bootcamp-6c5cfd894b-gnhgz   1/1     Running   0          41s
$ kubectl scale deployments/kubernetes-bootcamp --replicas=1
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get pods
NAME                                   READY   STATUS        RESTARTS   AGE
kubernetes-bootcamp-6c5cfd894b-9cn54   1/1     Terminating   0          57s
kubernetes-bootcamp-6c5cfd894b-ccqz7   1/1     Running       0          5m
kubernetes-bootcamp-6c5cfd894b-gnhgz   1/1     Terminating   0          57s

4.滚动更新

当前应用使用的 image 版本为 v1,执行如下命令将其升级到 v2:

$ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
deployment.extensions/kubernetes-bootcamp image updated
$ kubectl get pods
NAME                                   READY   STATUS        RESTARTS   AGE
kubernetes-bootcamp-5bf4d5689b-4k5lb   1/1     Running       0          3s
kubernetes-bootcamp-5bf4d5689b-b9szr   1/1     Running       0          4s
kubernetes-bootcamp-5bf4d5689b-sxxs5   1/1     Running       0          4s
kubernetes-bootcamp-5bf4d5689b-zftkx   1/1     Running       0          3s
kubernetes-bootcamp-6c5cfd894b-ccqz7   1/1     Terminating   0          6m25s
kubernetes-bootcamp-6c5cfd894b-r4mtd   1/1     Terminating   0          6s
kubernetes-bootcamp-6c5cfd894b-r6txw   1/1     Terminating   0          6s
kubernetes-bootcamp-6c5cfd894b-vnbd6   1/1     Terminating   0          6s

$ curl host01:30393
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-zftkx | v=2

通过 kubectl get pods 可以观察滚动更新的过程:v1 的 Pod 被逐个删除,同时启动了新的 v2 Pod。更新完成后访问新版本应用。

如果要回退到 v1 版本也很容易,执行 kubectl rollout undo 命令:

$ kubectl rollout undo deployments/kubernetes-bootcamp
deployment.extensions/kubernetes-bootcamp rolled back
$ curl host01:30393
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-pq7kv | v=1

菜鸟系列k8s——k8s快速入门(1)的更多相关文章

  1. ElasticSearch实战系列八: Filebeat快速入门和使用---图文详解

    前言 本文主要介绍的是ELK日志系统中的Filebeat快速入门教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...

  2. Gradle学习系列之一——Gradle快速入门

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  3. Gradle学习系列之一——Gradle快速入门(转)

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  4. ElasticSearch实战系列六: Logstash快速入门和实战

    前言 本文主要介绍的是ELK日志系统中的Logstash快速入门和实战 ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...

  5. 我给女朋友讲编程html系列(1) -- Html快速入门

    Html是一门编写网页的语言. 在我学习Html的时候,网上的很多朋友说,直接使用[记事本]编写就行了,最后保存为后缀名为 .html 的文件. 不过,我建议你用[Nodepad++]来编写网页,用这 ...

  6. SPRING-BOOT系列之SpringBoot快速入门

    今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...

  7. (Java多线程系列一)快速入门

    Java多线程快速入门 1.线程和进程的区别 进程是所有线程的集合,每一个线程是进程的一条执行路径. 2.多线程的应用场景 多线程主要体现在提高程序的效率,比如迅雷多线程下载,多线程分批发送短信等. ...

  8. WPF快速入门系列(8)——MVVM快速入门

    一.引言 在前面介绍了WPF一些核心的内容,其中包括WPF布局.依赖属性.路由事件.绑定.命令.资源样式和模板.然而,在WPF还衍生出了一种很好的编程框架,即WVVM,在Web端开发有MVC,在WPF ...

  9. 「数据挖掘入门系列」Python快速入门

    Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...

  10. .Net程序员玩转Android系列之一~Java快速入门

    前言 前段时间受公司业务发展需要,探索性进入Android开发领域.一切从零开始,java基础,Java进阶,Android框架学习,Eclipse熟悉,最终到第一个即时通讯App完成,历经一个月的时 ...

随机推荐

  1. string str = File.ReadAllText(@"c:\temp\ascii.txt");

    string str = File.ReadAllText(@"c:\temp\ascii.txt");

  2. JVM(九),垃圾回收回收算法

    九.垃圾回收回收算法 1.标记-清除(Mark and Sweep) 缺点是内存空间碎片化太严重 2.复制算法(Copying) (1)复制算法介绍 (2)复制算法优势 3.标记-整理算法(Compa ...

  3. canvas addHitRegion()

    CanvasRenderingContext2D.addHitRegion() 是 Canvas 2D API 给位图添加点击区域的方法. 但是 mobile 都不兼容

  4. vivo 手机 video 标签无法播放视频解决方案

    1. 针对 vivo 手机单独设置 video 标签加上 controls 此时video 可以点击播放,但是有进度条存在. 2. 将 video 隐藏,用一张图片定位在在 video 所在的位置,点 ...

  5. flask框架(四):通过局域网访问网站

    一:开启局域网访问 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) # 设置成局域网访问 二:设置windows的入站规则 ...

  6. Loooooooooooooooong time no see!

    好久没来啦~去年这会一口气写了好多,是因为即将离职,在公司闲的没事,再加上也积累了一些东西想分享. 最近有个朋友给我私信求助,才又想起这里.这快一年时间,又学习了不少东西.从何写起呢,哈哈,不知道啊~ ...

  7. node链接mongoDB及封装

    // 这个模块中封装所有对数据库的常用操作 const MongoClient = require('mongodb').MongoClient; const assert = require('as ...

  8. nginx返回固定字符串

    在系统还没有做集群的情况下,直接重启项目时刚好用户在使用的话,一般都会受到投诉,那么使用nginx返回类似“系统维护”的提示信息并且提前在应用上面做通知才是合适的做法 那么记录一下nginx里面的配置 ...

  9. window环境下 恢复odoo数据库备份文件时产生的 Database restore error: Command `psql` not found.

    1,首先先查看 PostgreSQL 是否安装在C盘,如果安装在其他盘 则需要配置环境变量 配置完成后重启服务就可以了 2, 如果还不行,只需在odoo.conf中添加一个配置设置.也就是在odoo项 ...

  10. SpringBoot Thymeleaf 配置多个Template Locations

    @Configuration public class ThymeleafConfigration { @Bean public SpringResourceTemplateResolver firs ...