第一章 先把Kubernetes跑起来
1.1 先跑起来
k8s官网已经为大家准备好了一个现成的最小可用系统。
https://kubernetes.io/docs/tutorials/kubernetes-basics/
1.2 创建K8s集群
https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/
全屏后就是一个模拟的linux系统。
kubectl get nodes
kubectl get pods
kubectl cluster-info // 查看集群信息
kubectl cluster-info dump // 集群详细信息
1.3 部署应用
kubectl run --help : 这个命令用来部署一个应用
kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080 // 启动pod
--image: 指定镜像。
--port : 设置应用对外服务的端口。
pod: 紧密相关的一组容器放到一个Pod中,同一个Pod中的容器共享IP地址和Port空间。
上面命令运行后:使用 kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 1 1 1 1 11s
1.4 访问应用
默认情况下,所有Pod只能在集群内部访问。对于上边的例子,要访问应用只能直接访问8080端口。为了能从外部访问应用,我们需要将容器的
8080端口映射到节点的端口。
kubectl expose // 将资源(deployment、service、replica set、replication controller或pod )暴露为新的Kubernetes Service。并使用该资源的选择器作
为指定端口上新服务的选择器。
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 10m
kubernetes-bootcamp NodePort 10.108.24.178 <none> 8080:31385/TCP 2m
NodePort: 表示外界可以通过访问node port 的31385(这个是随机的)访问这个服务。
Service:可以暂时理解为端口映射。
$ hostname // 查看当前的host name
minikube
$ curl minikube:31385 // 访问服务
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-rwrs6 | v=1
1.5 scale 应用
$ kubectl scale deployments/kubernetes-bootcamp --replicas=3 // 增加副本数量
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 3 3 3 3 19m
这个时候再看
kubectl get pods, 发现是三个pods在运行:
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-56cdd766d-jfhgh 1/1 Running 0 2m
kubernetes-bootcamp-56cdd766d-m2df7 1/1 Running 0 2m
kubernetes-bootcamp-56cdd766d-rwrs6 1/1 Running 0 22m
然后再访问service: 发现后端的请求被打散到不同的容器,这样就实现了负载均衡。
$ curl minikube:31385
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-jfhgh | v=1
$ curl minikube:31385
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-jfhgh | v=1
$ curl minikube:31385
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-m2df7 | v=1
$ curl minikube:31385
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-jfhgh | v=1
$ curl minikube:31385
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-m2df7 | v=1
1.6 滚动更新(rolling update)
当前使用image的版本为v1, 执行如下命令将其升级到v2:
$ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
deployment.extensions/kubernetes-bootcamp image updated
上面的更改立即生效,pod会逐渐被清除,新的pod逐渐启动。
要想回退到原来的版本: kubectl rollout undo deployments/kubernetes-bootcamp
第一章 先把Kubernetes跑起来的更多相关文章
- [转] VS2015中跑OpenGL红宝书第八版的第一章示例代码,运行
Ori Article Link OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资 ...
- 第一章 Kubernetes入门
第一章 Kubernetes入门 kubernetes是基于容器技术的分布式架构领先方案,是一个完备的分布式系统支撑平台. kubernetes带来的好处:1)全面拥抱微服务:2)统可以随时随地整体“ ...
- 白话SpringCloud | 第一章:什么是SpringCloud
前言 作为SpringCloud的正式第一章,我们先来简单了解下SpringCloud相关知识点吧,内容可能比较多. 何为微服务 传统单体架构 服务化架构 微服务架构 什么是SpringCloud 核 ...
- 日暮·第一章·决斗
日暮 第一章 决斗 泉州府,位于帝国的东南沿海,在数百年前,这里已是帝国最大的通商口岸之一,其一城之繁荣喧哗足以与异邦小国的都城相媲美,无数的人曾经来到这里,追逐财富,梦想,女人以及所有他们认为可 ...
- PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)
主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...
- 翻译学python---《Learn Python the hard Way》---第一章 绪论
打算学习python,但是又不想单纯地看书或是写个小项目,干脆引入很流行的翻译学习法来学习吧- 在论坛上看到了国外的一本<Learn Python the hard Way> ...
- 第一章、C#委托和事件(Delegate、Event、EventHandler、EventArgs)
第一章.C#委托和事件(Delegate.Event.EventHandler.EventArgs) 分类: 学习笔记-C#网络编程2012-12-08 14:10 7417人阅读 评论(3) 收藏 ...
- 按照鬼哥学so变化,四,第一章的例子
跟随鬼哥伦比亚科学so变化,四.第一章的例子 图纸/文化 听鬼哥说故事 ---------------------------------------------切割线--------------- ...
- (第一章)对程序员来说CPU是什么
这几天,看到一本书,<程序是怎么跑起来的>,觉得之前都没有完整的看完一本书,现在要从这本书开始,慢慢的培养自己写读书笔记的习惯,不能度过去就忘了. 学习是一个螺旋上升的过程,不要指望一下子 ...
随机推荐
- 2018-2019-2 《网络对抗技术》Exp2 后门原理与应用 20165210
2018-2019-2 <网络对抗技术>Exp2 后门原理与应用 20165210 实验内容: 使用netcat获取主机操作Shell,cron启动. 使用Socat获取主机操作Shell ...
- c# DataTable 导出csv文件
using System; using System.Data; using System.Configuration; using System.Collections.Generic; using ...
- 使用treemap 遍历map参数
遍历格式 XXX=123&XXX=456.....参数为map treemap是一个有序的key-value集合,它是通过红黑树实现的 TreeMap<String, String> ...
- nodejs——js 实现webSocket 兼容移动端
nodejs——js 实现webSocket 兼容移动端 //服务器端 //npm install --save ws const express = require('express'); cons ...
- 解决h5py的FutureWarning问题
h5py/__init__.py:: FutureWarning: Conversion of the second argument of issubdtype from `float` to `n ...
- Ubuntu在图形界面和命令行界面都循环登录解决办法
在做机器ip变化自动发送邮件的时候,在/etc/profile.d/目录下添加了一个脚本,重启的时候就循环登录了,无论是在图形界面还是命令行界面. 解决方法:利用系统U盘进入系统进行修改,具体如下: ...
- HDU 3345
http://acm.hdu.edu.cn/showproblem.php?pid=3345 最近重写usaco压力好大,每天写的都想吐.. 水一道bfs 注意的是开始旁边有敌人可以随便走,但是一旦开 ...
- 【剑指offer】不分行从上到下打印二叉树,C++实现(层序遍历)
原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印.例如: 图 不分行从上往下按层打印二叉 ...
- 【sklearn】性能度量指标之ROC曲线(二分类)
原创博文,转载请注明出处! 1.ROC曲线介绍 ROC曲线适用场景 二分类任务中,positive和negtive同样重要时,适合用ROC曲线评价 ROC曲线的意义 TPR的增长是以FPR的增长为代价 ...
- 动态样式语言Sass&Less介绍与区别
一. Sass/Scss&Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写, ...