当前位置:网站首页>Kubernetes 理解kubectl/调试
Kubernetes 理解kubectl/调试
2022-06-25 13:56:00 【富士康质检员张全蛋】
了解kubectl /kubectl命令和kubeconfig

kubectl允许我们以命令行的方式来和kuberneted做交互,这个命令行可以给它一些参数和输入文件,这些文件是一个个准备好的kubernetes对象,这些文件它读取之后,本质上相当于是一个转换器,他会将对象转换为rest调用。(kubernetes apiserver是一个server),kubelctl就是接受这些指令,并且将指令转化为rest调用传给apiserver。
-v 9 代表这条命令的log级别为9。可以看到去默认加载了kubecobnfig
[[email protected] ~]# kubectl get pod -v 9
I0623 17:09:34.998578 73360 loader.go:375] Config loaded from file: /root/.kube/config
I0623 17:09:35.013322 73360 round_trippers.go:423] curl -k -v -XGET -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.19.0 (linux/amd64) kubernetes/e199641" 'https://192.168.111.6:6443/api?timeout=32s'
I0623 17:09:35.041788 73360 round_trippers.go:443] GET https://192.168.111.6:6443/api?timeout=32s 200 OK in 28 milliseconds
I0623 17:09:35.041813 73360 round_trippers.go:449] Response Headers:这个kubeconfig本身就是一个配置文件,你可以配置很多的cluster,每个cluster有自己的名字,最重要的有server。
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1EUXhPREE1TURBeE9Gb1hEVE15TURReE5UQTVNREF4T0Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2dQClBZWXh3cWgrbklpTWJUeElkM1Y3NjBQS3VOQ3FzNDRHWGdUSEtWMWJBM3NpNzIrQXVlSFIyQ0piNWVvY2g0OHkKSFZkUkJRRmJNZnZPWTV3SC8yZFZnSFI0KzR6OWsxQk1STUh2dXZZUWxtWGFUNFl2SlIxNFRiOU5ESGdqdFcvZwpiYVJmcEV4UDl1WDR4NDU3MmJRTWhySWhOeldnUDdYdU1JbGtrQzhWNDFsVVNPSnU1Z2NiaE1xaERMSElpL1lJCmo1N1RmaDdUNkNxWjBmS3NQd2ZHeXM4MWFadWxoQ2RsVmE1Q3VTcFh1UHFDVjlxa2FZQm0xOGdQclFjcHFFNXkKd0lzUDlGUHhyWis5UzV1VWFCZEQ4L0VzZFlveTExbmdROG1kZm1CS2hPbkh4ekg5c1VOSVo3QldML0VETFEvbwo3U2QxV0xoUi9QZ3I3UzBOUEVNQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZPL3FyYTJYbk00QmVqR3IraTFXN21nRjBON2ZNQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFBdktnOENGcSsxV25IVUszWVkyRHRuUm5CS0xJYnM3eVkrb0diN0czd1A0djBiYTl4WQp3ZEczZmp1czJwUFgwckhxNG5HZFVxejl0Tk85S05Xd3huNmpvK1lRZHJJMEMwTXZNdGdsaHpoc3BCWkdMaE5sCjdWekpDcVpxZUV4c3JJbGlSRHQ5M3M4dzExd1d2RDU2ZmpoeFI0enNMNWdQd29LZERMVmNWOGJheGdzd3Q5MlQKVXFEc2Z5UWtrK2c2RzlPTi9ZZmI1OUxoTi9NcW5xaUg3UElSNDNDb21UYjAya0tzWXVvanZsNXJBVVprSjFQSwo3WTRLMWtKMVVDNmhIanZaUWtxT3RJSlM3dTEwZ1Q1NlRLMU42VHlCU2RVTkNRMm5NbE92YUx1RXYzWmtHakQ3CnBwVXh1VkNOdXAxTDNaNnFSUEZDK1VndXVmSmpxQmRJR2Q5VgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://192.168.111.6:6443
name: kubernetescontext是配置的上下文,它指定了去连接k8s当中的哪个集群,因为可以配置多个cluster。其次使用哪个用户去访问它,用户信息就在下面user部分,其次是context的名字叫啥,当前叫做[email protected]。
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: [email protected]
current-context: [email protected]
kind: Config
preferences: {}用户信息
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURFekNDQWZ1Z0F3SUJBZ0lJRkVDa2hGazExU0F3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TWpBME1UZ3dPVEF3TVRoYUZ3MHlNekEwTVRnd09UQXdNakphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXQyWVU5RGlNQWNYZWh6QjYKL3ZSMTVDenpaVzRQdmxUMGFZcTJuaVgzZmRYRkhwRlhLamVWVUZ1RGNnY3A5QzlmeFBqa2UwYVpjdEN4bGNycQp2a2xRbWZpNnRpMW5CVEk0SE4rQVdJNzdEMlo2ZEM5bTJ1bmxQRk5vU3RQQ1ZOTEdpU3BHayszS3pXbEU5ZFgzCkFzZGF0SnFJcHRSVG1mTFFHNG1ncXZHZzU1d3RaUFZ4VTU3YVFMbmsrK1NBRy9UZ1ZhUFZQNk9aeUZRakp4QmgKcjM1c1RyNUJEdTB6TWRUUFZzV2JvK09wQm4vUXdwdDV3aVo0azU1czR3Y1hqUXlLcDFvYVMxUnhPbEdZR2M1RwpJclFVOFNOTGUxZnZ5ZWRMWUhSOGVXMTlNM2hCUDRkWTBXbU12cXhvM3ZNWnp5QmYxTXhNM2RzMTdVN3RpbGcxCmZpU25ld0lEQVFBQm8wZ3dSakFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0h3WURWUjBqQkJnd0ZvQVU3K3F0clplY3pnRjZNYXY2TFZidWFBWFEzdDh3RFFZSktvWklodmNOQVFFTApCUUFEZ2dFQkFEdXFWeU93S2JqVGUya0FXOG9SU3JlUGFnQkNDOGhZSkZlazNIMDg4eGFadDhFckh5K2NNb3FRCmt6WnBuTlFuVFpDRHJxVEpJTkwyeWdXZTBjZGhZY1RDdG04SVdkbWVqRVVobmwvazR1b2FrTm1CdGY5Nzl6WEkKNEtHUCtPSm5OTWdzVk9KeEFZN1k3QWRCWXQ4aFJVYmdyT2U5TVRGRWFIaDQwMXNBWXc0Q1ZXYWNkRFRCYnFaTgpRWHZqdmtjOW9pakoyY05SdUd4ZndXeTJQVzlkQnI5MEtSSFVvNlR6WkJQKzBZeXg5SU14aktTQjdjdTRLSGRxCnlPOHFYVHZHeDN6VE1uUHkvYTUzbkxnY2JZdHREdCtzSVNocG1UZkdnclhIelEvd1dSM3ZkTWtPcHdqY3dOOGwKaUthRDdYQlZ2dlE5VllEaEI3UEtxamVhMGdRdG9QMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
Kubectl常用命令

Etcd本身除了是一个数据库,它还是一个消息中间件,它会将消息推送给apiserver,apiserver继承了同样的能力,一方面是list watch etcd,同时它也提供了同样的服务。
其他的组件包括kubectl也可以去watch apiserver,apiserver这边有任何的事件变化,其实是可以通知到的。
[[email protected] ~]# kubectl get pod -w
NAME READY STATUS RESTARTS AGE
dns-test 1/1 Running 3 37d
nginx-74d69c5bbb-6478r 1/1 Running 3 35d
nginx-74d69c5bbb-mhmsc 1/1 Running 3 35d
nginx-web-0 1/1 Running 4 37d
nginx-web-1 1/1 Running 0 16h
web-mychart-7d8f9bd8d6-jfdc9 1/1 Running 0 38m通过watch就实时的知道了这个对象的变化,集群所有的组件都是通过这种机制去运作的。
大家都去watch apiserver,有任何的事件就来通知我。
Kubectl 调试命令/describe

想知道pod发生了什么事情,想知道pod的事件变化,这个事件除了包含了容器本身的详细信息之外,还有它相关的事件event。
event在k8s里面实际上是另外一个对象,这个对象在创建出来的时候是要去关联一个主对象的。
from可以看到事件是谁发的,有调度器发的和节点产生绑定的event,这样相当于我这个event在创建pod的时候有一个关联关系了。
其次是kubelet产生了event,以event形式记录下创建pod的日志信息,是为这个pod创建的一个event对象。
describe的时候,第一它会将主对象拉取下来,其次会去拉主对象相关的event对象,然后做一个整合展示。
所以describe的时候就能够看到这个对象相关的事件。
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 57s Successfully assigned default/nginx-web-0 to node2
Normal Pulled 92s kubelet, node2 Container image "nginx:1.11" already present on machine
Normal Created 92s kubelet, node2 Created container nginx-test
Normal Started 92s kubelet, node2 Started container nginx-test
Kubectl 调试命令/exec

exec能不能使用就看你容器镜像然后构建的,容器基础镜像是什么,提供的调试工具是什么,如果是一个scrach,那里面什么都没有,想运行任何命令都是不行的,那么只能在主机上面做调试了。
Kubetcl 调试命令/logs

如果pod里面有多个容器,那么可以使用-c来指定看哪个容器的日志。
边栏推荐
- Mysql database compressed backup_ Summary of MySQL backup compression and database recovery methods
- 权益NFT开创者Hash Eagle如何重新定义NFT,用权益赋能长续价值?
- Kubernetes cluster construction of multiple ECS
- laravel8实现图片验证码
- Asp. Net webform exporting excel using npoi
- DE2-115 FPGA开发板的VGA显示
- shell 字符串变量
- Error1822 and error1824 are displayed in the database
- None of the MLIR Optimization Passes are enabled (registered 2)解决办法
- 哈希錶、哈希沖突
猜你喜欢

Application of tactile intelligent sharing-rk3568 in financial self-service terminal

BACnet gateway bl103 for building automation

oracle数据库常用的函数总结

Windows下MySQL的安装和删除

一次性讲清楚 Handler 可能导致的内存泄漏和解决办法 | 开发者说·DTalk

Report on Hezhou air32f103cbt6 development board

两种方法实现pycharm中代码回滚到指定版本(附带截图展示)

Getting started with shell variables

数据采集系统网关采集工厂效率

VGA display of de2-115 FPGA development board
随机推荐
打新债是不是不安全
What if the CPU temperature of Dell computer is too high
Summary of common functions in Oracle Database
shell 数组
使用KVM虚拟化部署EVE-NG
Tencent cloud builds a Socks5 multi IP proxy server to realize the perfect building of a game with a single window and a single IP. Tutorial attached tool "suggestions collection"
还没弄明白微服务数据架构事务管理+ACID+一致性+CAP+BASE理论吗,看完彻底解决疑惑
shell 内置命令
哈希錶、哈希沖突
Custom instruction, mixing, routing, lifecycle
Let and const commands
QT memory mapping
Asp. Net webform exporting excel using npoi
"Mobile cloud Cup" computing power network application innovation competition is in hot registration!
shell 运算符
分享自己平時使用的socket多客戶端通信的代碼技術點和軟件使用
Is qiniu regular? Is it safe to open a stock account?
多台云服务器的 Kubernetes 集群搭建
权益NFT开创者Hash Eagle如何重新定义NFT,用权益赋能长续价值?
第一次读 “Clean” 系列,并没有觉得这是一本多好的书