上一篇文章中,我们一创建了一个简单的 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. CentOS搭建FTP服务

    前言: 环境:centos7.5 64 位 正文: 使用 yum 安装 vsftpd yum install vsftpd -y 安装完成后,启动 FTP 服务: service vsftpd sta ...

  2. 微信小程序开发用户授权登录

    用wx.login获取登录凭证code <!--pages/user/index.wxml--> <view hidden='{{boolean}}'> <view wx ...

  3. onselectstart属性解决双击出现的蓝色区域

    小伙伴们对 onselect  这个事件应该不陌生吧(在元素中的文本被选中时触发),但当同事问我onselectstart 这个事件的时候,我是一脸蒙蔽,心想,这难道不是随便起的一个方法名吗2333 ...

  4. Spring Cloud Alibaba Sentinel 整合 Feign 的设计实现

    作者 | Spring Cloud Alibaba 高级开发工程师洛夜 来自公众号阿里巴巴中间件投稿 前段时间 Hystrix 宣布不再维护之后(Hystrix 停止开发...Spring Cloud ...

  5. kindeditor扩展粘贴截图功能&修改图片上传路径并通过webapi上传图片到图片服务器

    前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...

  6. System.net.mail.smtpException;服务器提交了协议冲突 服务器响应为:

    最近发邮件遇到问题. 主机godaddy 端口 25,80 都可以用 stmp服务器地址:smtpout.secureserver.net 不支持ssl 我就吧 EnableSsl 设置为false了 ...

  7. 如何配置React Native真机调试-iOS

    说在前面,本教程是建立在项目已经成功在模拟器上运行的基础上,如果你是还未配置好环境的新手,建议先从官网快速入门开始:官网英文版 . 中文版 ok, 切入正题,当你已经完成好环境配置,在模拟器上成功的运 ...

  8. asp.net MVC 5 路由 Routing

    ASP.NET MVC ,一个适用于WEB应用程序的经典模型 model-view-controller 模式.相对于web forms一个单一的整块,asp.net mvc是由连接在一起的各种代码层 ...

  9. mysql 开发进阶篇系列 48 物理备份与恢复(xtrabackup 的增量备份与恢复,以及备份总结)

    一.增量备份概述 xtrabackup  和innobackupex  二个工具都支持增量备份,这意味着能复制自上次备份以来更改的数据.可以在每个完整备份之间执行许多增量备份,因此,您可以设置一个备份 ...

  10. ⑧javaWeb之在例子中学习(过滤器Filter)

    前言 本系列 Servlet & JSP 学习系列[传送门]逐渐到了中期了,希望大家喜欢我写的,总结的点点滴滴- 今天我们来讲讲过滤器 你们的支持是我写博客的动力哦. 最近买了两本书,觉得大二 ...