kubernetes进阶(一) kubectl工具使用详解
管理k8s核心资源的三种基本方法:
一、陈述式-主要依赖命令行工具 --可以满足90%以上的使用场景,但是缺点也很明显:
命令冗长,复杂,难以记忆
特定场景下,无法实现管理需求
对资源的增、删、查操作比较容易,改比较麻烦,需要patch来使用json串来更改。
1.1 查看名称空间 查询时,为了避免重名,需要指定名称空间。
# kubectl get namespace
简写:
# kubectl get ns

1.2 查询命名空间中的资源,使用-n 指定命名空间
# kubectl get all -n default
# kubectl get pods -n default
# kubectl get nodes -n default
1.3 创建命名空间
# kubectl create ns app

1.4 删除命名空间
# kubectl delete ns app

1.5 创建一个deployment类型的pod控制器:PS:1.16版本以后,控制器有变化,具体变化参考k8s官网。
pod控制器类型参考:https://www.cnblogs.com/weiyiming007/p/10246118.html
# kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public
# kubectl get deploy -n kube-public

1.6 查看pod控制器或者pod概览信息 : -o wide
# kubectl get deploy -o wide -n kube-public
# kubectl get pod -o wide -n kube-public

1.7 查看pod控制器、pod、service等资源的详细信息:describe
# kubectl describe deploy nginx-dp -n kube-public
# kubectl describe pod nginx-dp-5dfc689474-4bhfh -n kube-public
# kubectl describe svc nginx-dp -n kube-public
详细信息太多,就不截图了。
1.8 进入pod容器,用法和docker exec一致,但是需要使用-n 指定命名空间
# kubectl exec -ti nginx-dp-5dfc689474-4bhfh /bin/bash -n kube-public

1.9 删除pod容器,此删除,只是删除了pod容器,并没有删除pod控制器,所以此操作相当于删除pod后,pod控制器在拉起一个新的pod。
# kubectl delete pods nginx-dp-5dfc689474-4bhfh -n kube-public

可以看到我们删除pod以后,pod控制器又帮我们从新拉起了一个新的pod,想要完全删除,需要删除pod控制器。
1.10 删除pod控制器
# kubectl delete deploy nginx-dp -n kube-public

可以看到,当我们删除了pod控制器以后,pod容器也随之被删除了。
1.11 扩容pod --replicas=数量
# kubectl scale deployment nginx-dp --replicas=2 -n kube-public


1.12 管理service资源 service资源:为pod资源提供稳定的接入点
# kubectl create deploy nginx-dp --image=harbor.od.com/public/nginx:v1.7.9
# kubectl expose deploy nginx-dp --port=80 -n kube-public

看到我们已经创建了一个service资源,可以通过192.168.234.234的80,访问到后面pod,为了解决pod漂移导致IP变化的问题。
可以使用ipvsadm -Ln来查看:nq为ipvs调度算法中的一种,其他调度算法请自行查阅。

我们通过删除pod的方式,让pod漂移到另一台node节点,再来查看一下:

可以看到,虽然pod漂移了,但是service资源提供的接入点是不变的,这得益于ipvs的强大。


1.13 查看资源配置清单详细信息:-o yaml
# kubectl get pod nginx-dp-5dfc689474-c5r9r -o yaml -n kube-public
# kubectl get deploy nginx-dp -o yaml -n kube-public
# kubectl get svc -o yaml -n kube-public
1.14 查看属性的定义及用法:例:查看service资源下metadata的定义及用法
# kubectl explain service.metadata

2、声明式-依赖统一资源配置清单(manifest) yaml/json
2.1 创建一个svc资源配置清单
# vi nginx-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-ds
name: nginx-ds
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-ds
sessionAffinity: None
type: ClusterIP
# kubectl create -f nginx-ds-svc.yaml

# kubectl get svc nginx-ds -o yaml -n default

2.2 离线修改资源配置清单:
修改资源配置清单后可以使用apply应用。
这里增加一个知识点,就是kube-apiserver这个服务当中,有一个限制端口范围的参数:--service-node-port-range 10-29999,这个参数在使用apply修改资源配置清单的时候,会有作用
如果修改后的资源配置清单中的port不在这个范围,会报错,修改这个以后,重启kube-apiserver即可。
# vi nginx-ds-svc.yaml #将对外暴露的端口改为881
# kubectl apply -f nginx-ds-svc.yaml
可以看到端口从80变成了881

修改资源配置清单分为在线修改和离线修改(推荐离线修改):
2.3 在线修改:我这里使用在线修改,将端口修改为888
# kubectl edit svc nginx-ds -n default

2.4 删除资源:
2.4.1 陈述式:
# kubectl delete svc nginx-ds -n default
2.4.2 声明式:
# kubectl delete -f nginx-ds-svc.yaml
3、GUI式-主要依赖图形化操作界面(web界面)
kubernetes进阶(一) kubectl工具使用详解的更多相关文章
- 第九章 kubectl命令行工具使用详解
1.管理k8s核心资源的三种基础方法 陈述式管理方法:主要依赖命令行CLI工具进行管理 声明式管理方法:主要依赖统一资源配置清单(manifest)进行管理 GUI式管理方法:主要依赖图形化操作界面( ...
- PowerShell攻防进阶篇:nishang工具用法详解
PowerShell攻防进阶篇:nishang工具用法详解 导语:nishang,PowerShell下并肩Empire,Powersploit的神器. 开始之前,先放出个下载地址! 下载地址:htt ...
- Docker Kubernetes Service 网络服务代理模式详解
Docker Kubernetes Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...
- Kubernetes K8S之资源控制器Daemonset详解
Kubernetes的资源控制器Daemonset详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C/ ...
- kubernetes运行应用2之DaemonSet详解
kubernetes运行应用1之Deployment详解 查看daemonset 如下,k8s自身的 DaemonSet kube-flannel-ds和kube-proxy分别负责在每个结点上运 ...
- Linux命令工具 top详解
Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...
- Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区
Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区 Lua包管理工具Luarocks详解
- [转]网络性能评估工具Iperf详解(可测丢包率)
原文链接:安全运维之:网络性能评估工具Iperf详解:http://os.51cto.com/art/201410/454889.htm 参考博文:http://linoxide.com/monito ...
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
来源: http://www.cnblogs.com/JustinYoung/archive/2009/04/03/kaifarenyuangongju2.html 在上一篇文章IE8“开发人员工具” ...
随机推荐
- Java高并发与多线程(三)-----线程的基本属性和主要方法
今天,我们开始Java高并发与多线程的第三篇,线程的基本属性和主要方法. [属性] 编号(ID) 类型long 用于标识不同的线程,编号唯一,只存在java虚拟机的一次运行 名称(Name) 类型St ...
- 【Android】关于连续多次点击控件的控制方案(新建监听类)
参考:防止Android过快点击造成多次事件的三种方法_胖胖的博客-CSDN博客 实现逻辑很简单: 设置限定时间 在用户点击时开始计时 若计时未超过限定时间,则不允许触发点击事件 因还未学习过Rxja ...
- linux中的虚拟环境工具
1.虚拟环境工具的学习 python的虚拟环境,其实就是在机器上,方便的创建出多个解释器,每个解释器运行一个项目,互相之间不受影响 2.virtualenv工具,可以方便的创建,使用,删除也很方便 3 ...
- uni-app开发经验分享十六:发布android版App的详细过程
开发环境 1. Android Studio下载地址:Android Studio官网 OR Android Studio中文社区 2. HBuilderX(开发工具) 3. App离线SDK下载:最 ...
- Cisco发现协议
CDP Cisco Discovery Protocol: 思科发现协议 是一个提供关于直接相连的交换机.路由器和其它Cisco设备的综合信息的专有工具 CDP 能够发现直接相邻的设备而不管这些设备所 ...
- Linux中LPC、RPC、IPC的区别
其实这玩意儿就是纸老虎,将英文缩写翻译为中文就明白一半了. IPC:(Inter Process Communication )跨进程通信 这个概念泛指进程之间任何形式的通信行为,是个可以拿来到处套的 ...
- The WebSocket Protocol 1000
https://tools.ietf.org/html/rfc6455 https://tools.ietf.org/html/rfc6455 7.4.1. Defined Status Codes ...
- Java中get()和set()作用
一.前言 在程序的设计中,我们普遍的定义一个private变量,然后为这个变量加上get() .set()方法,那为何不直接定义一个public变量呢? 很多人是这样回答的: 1.关系到安全性的问题, ...
- LOJ10081
USACO 201 Jan. Gold Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到 T 个城镇 ,编号为 1 到 T.这些城镇之间通过 R 条道路(编号为 ...
- CSS选择器,属性前缀,长度单位,变形效果,过渡效果,动画效果
CSS3选择器 ·*通配选择器 ·E标签选择器 ·E#id ID选择器 ·E.class类选择器 ·E F包含选择器,后代选择器 ·E>F子包含选择器 ·E+F相邻兄弟选择器 ·E[foo]属性 ...