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

    //1.导入http 核心模块 const http = require("http"); //2.调用http.createServer 方法,创建一个web 服务器对象 con ...

  2. 吴恩达机器学习笔记24-神经网络的模型表示1(Model Representation of Neural Network I)

    神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型.这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出.下图是一个以逻辑回归模 ...

  3. 微信小程序wx.request接口

    微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJE ...

  4. Python的基础语法(一)

    0. 前言 最近正在重新整理Python的基础知识,以便更好地学习新知识.这一部分主要是讲述Python基础语法的演示.下面的语法都是基于Python3的语法. 1. 注释 注释:Python的注释方 ...

  5. GITHUB(github)初级使用

    Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git版本仓库,还拥有了更美观的Web ...

  6. 【app】Hybrid?Native?不知道你就out了!

    Hybrid?是个啥? 相信大家在平常生活中也会经常见到这个词,比如现在比较火的hybrid汽车(混合动力汽车) 那如果是针对于App而言呢? 那就要从App的分类说起了 目前主流应用程序大体分为三类 ...

  7. 带你一文了解Python中的运算符

    运算符 目标 算数运算符 比较(关系)运算符 逻辑运算符 赋值运算符 运算符的优先级 数学符号表链接:https://zh.wikipedia.org/wiki/数学符号表 01. 算数运算符 是完成 ...

  8. 浅谈React16框架 - Fiber

    前言 React实现可以粗划为两部分:reconciliation(diff阶段)和 commit(操作DOM阶段).在 v16 之前,reconciliation 简单说就是一个自顶向下递归算法,产 ...

  9. 11.Django2.0文档

    第四章 模板 1.标签 (1)if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% e ...

  10. Netty源码分析(二):服务端启动

    上一篇粗略的介绍了一下netty,本篇将详细介绍Netty的服务器的启动过程. ServerBootstrap 看过上篇事例的人,可以知道ServerBootstrap是Netty服务端启动中扮演着一 ...