上一篇文章中,我们一创建了一个简单的 K8S 集群,https://www.cnblogs.com/klvchen/p/9553499.html

这里我们开始使用 kubectl 命令来创建应用,下面创建的 pod ,service 的 ip 地址范围是我们创建 K8S 集群中时所指定的 (kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap)

pod 地址范围为 10.244.0.0/16

service 地址范围为 10.96.0.0/12

创建 deployment

# 通过 kuectl run 命令来创建一个 deployment
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --dry-run=true

nginx-deploy 是我们创建 deployment 的名字
--image : 指定使用的镜像
--port=80 :容器暴露的端口,该端口只能在 K8S 集群中访问
-dry-run=true : 检测语法是否错误,不会正在创建
# 创建 nginx-deploy
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 # 查看 deployment
kubectl get deployment

# 查看 pod
kubectl get pods 或 kubectl get pods -o wide



这里我们可以使用 K8S 集群中任意一台服务器访问 curl 10.244.2.2 获得 nginx 的内容

删除 pod

# kubectl delete 删除 pod
kubectl delete pods nginx-deploy-5b595999-zp4b4



当我们再查看时,发现 pod 删除后自动再创建了,而且所在的节点也改变了,对应的 pod 的 ip 也改变了

创建 service

上面 pod 删除后重新创建,ip地址会发生改变,为解决这问题,我们使用 service

kubectl expose deployment nginx-deploy --name=nginx --port=80 --protocol=TCP

# 查看 service
kubectl get svc # 取得确认对象的详细信息
kubectl describe svc nginx # 可以通过 edit 把 ClusterIP 改成 NodePort,然后通过所有的物理机IP进行访问
kubectl edit svc nginx



我们使用集群中的任何服务器访问 curl 10.98.120.192 获得 nginx 的内容,即使 pod 删除后再重建

删除 nginx-deploy , nginx
kubectl delete deployment nginx-deploy
kubectl delete svc nginx

扩容缩容Pod的操作

# 重新创建一个 pod
kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 # 创建 service
kubectl expose deployment myapp --name=myapp --port=80
kubectl get svc



访问 service myapp

# 执行扩容缩容Pod的操作
kubectl scale --replicas=5 deployment myapp
kubectl get pods -o wide

升级镜像

# 通过 kubectl set image 升级镜像
kubectl set image deployment myapp myapp=ikubernetes/myapp:v2 # 再次访问 service ip
curl 10.110.3.25

恢复到上一个版本

# 恢复上一个版本的镜像
kubectl rollout undo deployment myapp
kubectl rollout status deployment myapp # 再次访问 service ip
curl 10.110.3.25

查看标标签

kubectl get pods --show-labels



service 是根据 pod 的标签来进行管理

添加标签

# 添加 release 标签,值为 stable
kubectl label pods myapp-6865459dff-445x2 release=stable

标签选择器

kubectl get pods -l release!=stable
kubectl get pods -l "release in (stable,beta,alpha)"
kubectl get pods -l "release notin (stable,beta,alpha)"

节点的标签

# 获取节点的标签
kubectl get nodes --show-labels # 添加节点的标签
kubectl label nodes node1 disktype=ssd # 删除节点的标签
kubectl label nodes node1 disktype-

K8S 基本操作的更多相关文章

  1. 【K8S】client-go、python-k8sclient开发K8S

    0x01 client-go 1.简介 Client-go是kubernetes官方发布的调用K8S API的golang语言包,可以用来开发K8S的管理服务.监控服务,配合前端展示,就可以开发出一款 ...

  2. [转帖]从零开始入门 K8s | 手把手带你理解 etcd

    从零开始入门 K8s | 手把手带你理解 etcd https://zhuanlan.zhihu.com/p/96721097 导读:etcd 是用于共享配置和服务发现的分布式.一致性的 KV 存储系 ...

  3. 自己编写k8s

    ## 基于Docker和Kubernetes的企业级DevOps实践训练营 ### 课程准备 1. 离线镜像包 百度:https://pan.baidu.com/s/1N1AYGCYftYGn6L0Q ...

  4. Kubernetes官方java客户端之六:OpenAPI基本操作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. Go语言中使用K8s API及一些常用API整理

    Go Client 在进入代码之前,理解k8s的go client项目是对我们又帮助的.它是k8s client中最古老的一个,因此具有很多特性. Client-go 没有使用Swagger生成器,就 ...

  6. 阳明-K8S训练营全部文档-2020年08月11日14:59:02更新

    阳明-K8S训练营全部文档 Docker 基础 简介 安装 基本操作 Dockerfile Dockerfile最佳实践 Kubernetes 基础 简介 安装 资源清单 Pod 原理 Pod 生命周 ...

  7. k8s节点简介、移除节点、新增节点

    简介 Node是Pod真正运行的主机,可以是物理机也可以是虚拟机. Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源. 为了管理Pod,每个Node节点上 ...

  8. 学习k8s(四)

    1.K8S核心组件 1.Master节点: etcd: 分布式键值对数据库,保存集群状态 api-server: 接受并响应用户的请求 controller: 控制器管理,控制容器的副本数,故障检测 ...

  9. 学习k8s(一)

    一.安装及介绍 1.k8s架构 2.核心组件 3.其他组件 4.安装方式 yum安装: 1.5 最简单,版本低,适合学习 二进制安装: 最繁琐,可以用saltstack安装 kubeadm安装: 谷歌 ...

随机推荐

  1. 每天学点SpringCloud(六):Hystrix使用

    Hystrix是一个实现断路器模式的库.什么是断路器模式呢?就像我们家庭中的电闸一样,如果有那一处出现意外,那么电闸就会立刻跳闸来防止因为这一处意外而引起更大的事故,直到我们确认处理完那一处意外后才可 ...

  2. 2个简单实例让你快速理解try-catch的用法

    相信在实际项目中,你可能经常会看到类似下面的代码 try { // 尝试执行代码块 } catch(err) { // 捕获错误的代码块 } finally { // 结果如何都会执行的代码块 } 简 ...

  3. 一份从0到1的java项目实践清单

    虽说工作就是简单的事情重复做,但不是所有简单的事你都能有机会做的. 我们平日工作里,大部分时候都是在做修修补补的工作,而这也是非常重要的.做好修补工作,做好优化工作,足够让你升职加薪! 但是如果有机会 ...

  4. linux scp 使用方法

    scp虽然只有把文见发送到远端和从远端copy文件俩功能,但是常常把俩功能的先写什么给计混了,所以我就用通俗的大白话给总结了下,十分容易记忆,这里给大家分享一下.scp 我们常用的两个功能: (1)把 ...

  5. Oracle递归查询start with connect by prior

    一.基本语法 connect by递归查询基本语法是: select 1 from 表格 start with ... connect by prior id = pId start with:表示以 ...

  6. 如何正确且高效实现OSSIM中文化的解决方案(图文详解)

    前言   对于玩OSSIM的初学者或者中级水平的从业人员来说,都有一定必要性从中文看起,当然,最终还是英文的目标迈进,只是说,为了让自己更快速上手! 虽然系统说明支持中文,实际上,只是台湾的繁体中文而 ...

  7. 纸上谈兵: AVL树[转]

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 二叉搜索树的深度与搜索效率 我们在树, 二叉树, 二叉搜索树中提到,一个有n个节点 ...

  8. [转]java中作用域public private protected 以及不写的区别

    在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友 ...

  9. JavaScript经典片段

    typeof jQuery != "undefined" || importjQuery(); 判断jQuery对象是否存在,如果不存在就调用importjQuery()方法加载j ...

  10. RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建

    环境配置 Ubuntu Server 18.04 RabbitMQ 3.6.10 安装之前 我们使用apt-get进行RabbitMQ安装,在安装之前,强烈建议您把apt源换位国内,大大增加下载安装的 ...