菜鸟系列k8s——k8s快速入门(1)
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)的更多相关文章
- ElasticSearch实战系列八: Filebeat快速入门和使用---图文详解
前言 本文主要介绍的是ELK日志系统中的Filebeat快速入门教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...
- Gradle学习系列之一——Gradle快速入门
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...
- Gradle学习系列之一——Gradle快速入门(转)
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...
- ElasticSearch实战系列六: Logstash快速入门和实战
前言 本文主要介绍的是ELK日志系统中的Logstash快速入门和实战 ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...
- 我给女朋友讲编程html系列(1) -- Html快速入门
Html是一门编写网页的语言. 在我学习Html的时候,网上的很多朋友说,直接使用[记事本]编写就行了,最后保存为后缀名为 .html 的文件. 不过,我建议你用[Nodepad++]来编写网页,用这 ...
- SPRING-BOOT系列之SpringBoot快速入门
今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...
- (Java多线程系列一)快速入门
Java多线程快速入门 1.线程和进程的区别 进程是所有线程的集合,每一个线程是进程的一条执行路径. 2.多线程的应用场景 多线程主要体现在提高程序的效率,比如迅雷多线程下载,多线程分批发送短信等. ...
- WPF快速入门系列(8)——MVVM快速入门
一.引言 在前面介绍了WPF一些核心的内容,其中包括WPF布局.依赖属性.路由事件.绑定.命令.资源样式和模板.然而,在WPF还衍生出了一种很好的编程框架,即WVVM,在Web端开发有MVC,在WPF ...
- 「数据挖掘入门系列」Python快速入门
Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...
- .Net程序员玩转Android系列之一~Java快速入门
前言 前段时间受公司业务发展需要,探索性进入Android开发领域.一切从零开始,java基础,Java进阶,Android框架学习,Eclipse熟悉,最终到第一个即时通讯App完成,历经一个月的时 ...
随机推荐
- Lyft 基于 Flink 的大规模准实时数据分析平台(附FFA大会视频)
摘要:如何基于 Flink 搭建大规模准实时数据分析平台?在 Flink Forward Asia 2019 上,来自 Lyft 公司实时数据平台的徐赢博士和计算数据平台的高立博士分享了 Lyft 基 ...
- nginx信号
ps aux | grep nginx #查看nginx进程,要查看nginx的pid,就得使用这个命令查看*********************nginx信号****************** ...
- CSS的水平居中和垂直居中
水平居中如果不太熟悉盒子模型的话属实不太好理解,其实就是控制其他属性来让border之内的内容被控制在父容器中间就行了,最经典的就是使用{margin: 0 auto}了,控制其上下外边框为0,左右 ...
- 你知道 GNU Binutils 吗?【binutils】
概述 从事 Linux 开发的朋友们都不可避免地用到一些工具,比如 objcopy.nm.objdump.readelf 等等.其实这一系列的工具,就是所谓的 Binutils,当然 GNU 就表示它 ...
- Java线程之wait()、notify()、notifyAll()
翻译:https://www.journaldev.com/1037/java-thread-wait-notify-and-notifyall-example 简述 java中Objct对象包含三个 ...
- 24.Python比较运算符(关系运算符
比较运算符,也成关系运算符,用于对常量.变量或表达式的结果进行大小.真假等比较,如果比较结果为真,则返回 True:反之,则返回 False. Python 支持的比较运算符如表 1 所示. 表 1 ...
- python-matplotlib-ERROR
在导入包显示画图时,出错:ImportError: No module named '_tkinter 解决办法:通常原因是tkinter和tk-devel缺失 ERROR: matplotlib的图 ...
- Jmeter函数 参数
1.time时间函数 ${__time(,)} 1450056496991 //无格式化参数,返回当前毫秒时间 ${__time(/1000,)} //返回当前时间为秒 ${__time(yyyyMM ...
- Java项目框架搭建系列(Java学习路线)
前言: 已经工作4年,真是时间飞逝. 其实当你在一间公司工作一两年之后,公司用到的开发框架的基本使用你应该都会了. 你会根据一个现有项目A复制一下搭建出另外一个类似框架的项目B,然后在项目B上进行业务 ...
- Zookeeper 安装及命令行操作
[参考文章]:[分布式]Zookeeper使用--命令行 [参考文章]:zookeeper的数据模型 [参考文章]:zookeeper ACL使用 1. 安装包下载 官方下载地址 选择一个具体的版本进 ...