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. 前端 OSS 自动化部署脚本

    部署脚本 (deploy.js 自己命名) const co = require('co') const OSS = require('ali-oss') const path = require(' ...

  2. gulp+babel 实时转es6

    1.安装gulp  npm install gulp 2.得到package.json文件  npm init 2.全局安装Babel. npm install -g babel-cli    npm ...

  3. MacBook pro管理员变成普通用户无法解锁问题

    最近使用Mac的时候,把管理员的名字修改了一下,WTF?没有管理员权限了?然后就没有解锁权限了,这可以说是Mac的一个致命bug呀!下载软件也不可以了.具体我的解决方式在这里记录一下,以供和我遇到同样 ...

  4. 免费馅饼~-~ (hdu 1176

    当我准备要写这个随笔的时候是需要勇气的. 掉馅饼嘛,肯定是坑. (hdu1176 话说,gameboy人品太好,放学回家路上有馅饼可捡.还就在0~10这11个位置里,当馅饼开始掉的时候,gameboy ...

  5. JDBC之——原理和连接数据库

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  6. Linux 相关系统日志查看

    1. 登录日志 cat /var/log/secure 涉及到账号登录的日志信息都会记录在此文件中. 2. Unit 的启动日志 journalctl 可以查看所有 unit 的启动日志,日志的配置文 ...

  7. TCP最大报文段长度MSS

    最大报文段长度(MSS)表示TCP传往另一端的最大数据库的长度.当一个连接建立时,连接的双方都要通告各自需要接收的MSS选项(MSS选项只能出现在SYN报文段中).如果一方不接收来自另一方的MSS值, ...

  8. Mac 10.15 关闭SIP

    升级Mac后SIP开启了,根目录不能创建文件了 关闭 sip,终端输入 sudo mount -uw / 在我们开发过程中,有时候我们安装一些工具软件需要将文件拷贝到系统限制更改的文件夹中,甚至有时需 ...

  9. .NET DLL 保护措施详解(非混淆加密加壳)

    为什么要保护DLL,我就不多说了,各人有各人的理由.总的来说,就是不想核心逻辑泄露及授权验证被破解两大方面的因素.市面上的混淆加密工具对.NET源码保护的效果天差地别,很多网上下到的混淆工具破解版对. ...

  10. Mac下搭建Vue开发环境

    认知: 注:上面的图片转自Vue2.0 新手入门 — 从环境搭建到发布 1.安装brew 打开终端运行以下命令: /usr/bin/ruby -e "$(curl -fsSL https:/ ...