kubectl命令大全

网友投稿 299 2022-09-09

kubectl命令大全

文章目录

​​一、常用别名​​​​二、基本命令​​

​​`2.1.创建或更新资源对象`​​​​`2.2.查看资源对象`​​​​`2.3.描述资源对象`​​​​`2.4.删除资源对象`​​​​`2.5.执行容器的命令`​​​​`2.6.查看容器的日志`​​​​`2.7.kubectl自动补齐`​​

​​三、Pod操作​​

​​`3.1. 生成一个外部访问的端口`​​​​`3.2. 强制删除Pod`​​​​`3.3. 添加taint,避免Pod 调度到特定Node 上`​​​​`2.4. 将Pod的开放端口映射到本地`​​​​`3.5. 在Pod和本地之间复制文件`​​​​`3.6 启动一个测试DNS的Pod`​​​​`3.7. 查看pod标签`​​​​`3.8.查看Pod支持的字段`​​​​`3.9.列出指定标签的Pod名称`​​​​`查看指定标签使用cpu最高的pod`​​

​​四、RC操作​​

​​`4.1. 动态缩放`​​

​​五、Deployment​​

​​`5.1.创建一个Deployment`​​​​`5.2.导出一个标准Deployment的yaml文件`​​​​`5.3.查看Deployment支持的字段`​​​​`5.4.滚动升级`​​

​​滚动升级时,如果镜像版本一致,不会触发pod重建,容器更新​​

​​`5.5.版本回滚`​​​​`5.6.弹性伸缩`​​

​​六、Service​​

​​`6.1.发布一个服务`​​​​`6.2.导出一个标准Service的yaml文件`​​

​​七、命名空间​​

​​`7.1.创建名字为cka的命名空间`​​​​`7.2.给命名空间设置标签`​​

​​八、Node​​

​​`8.1.给节点加污点,不往上面调度Pod`​​​​`8.2.给节点打标签`​​​​`查看node污点`​​

​​九、PV​​

​​`9.1.按容量进行排序`​​

​​十、实战​​

​​`删除k8s节点`​​

参考书籍:《Kubernetes权威指南第4版从Docker到Kubernetes实践全接触》 参考文章:​​​K8s kubectl 常用命令总结​​

一、常用别名

cat >> ~/.bash_profile <

二、基本命令

​​2.1.创建或更新资源对象​​

kubectl create -f my-service.yaml -f my-rc.yaml #根据YAML配置文件一次性创建Service和RCkubectl apply -f app.yaml #如果存在则更新,不存在则创建

​​2.2.查看资源对象​​

kubectl get node #查看Node状态kubectl get pods pod1 pod2 #获取多个pod的信息kubectl get pod -o wide #显示Pod的更多信息kubectl get pod -o yaml #以YAML格式显示Pod的详细信息kubectl get pod -l app=web #查看标签为app=web的Podkubectl get pod -o name #获取Pod的名字kubectl get rc,service #查看RC和Service列表kubectl get endpoints #查看Endpoint列表kubectl get pod -n kube-system -w #动态查看podkubectl get cs #查看Master组件状态kubectl api-resources #列出K8s所有资源kubectl get all -n default #查看default命名空间下面的所有资源kubectl cluster-info #查看集群接口信息kubectl get apiservice #查看apiserver聚合层注册信息kubectl api-versions #查看API的版本kubectl logs -f -c <容器名称> #如果Pod中有多个容器,需用-c指定

​​2.3.描述资源对象​​

kubectl describe pods #显示由RC管理的Pod的信息kubectl describe node #查看某个node的详细信息

​​2.4.删除资源对象​​

kubectl delete -f pod.yaml #根据pod.yaml定义的名称删除Podkubectl delete pods,services -l name= #删除所有包含某个Label的Pod和Servicekubectl delete pods --all #删除所有Pod

​​2.5.执行容器的命令​​

kubectl exec date #执行Pod的date命令,默认使用Pod中的第一个容器执行kubectl exec -c date #指定Pod中的某个容器执行date命令kubectl exec -it -c /bin/bash #通过bash获得Pod中某个容器的TTY,相当于登陆容器

​​2.6.查看容器的日志​​

kubectl logs kubectl logs -f -c #跟踪查看容器的日志,相当于tail -f命令的结果

​​2.7.kubectl自动补齐​​

yum -y install bash-completionbashsource <(kubectl completion bash)

三、Pod操作

​​3.1. 生成一个外部访问的端口​​

kubectl expose deployment web --port=80 --type=NodePort

​​3.2. 强制删除Pod​​

新Pod已经Running,但上一个Pod一直处于Terminal状态

kubectl delete pod Podname --force --grace-period=0

​​3.3. 添加taint,避免Pod 调度到特定Node 上​​

kubectl taint node knative-node1 foo=bar:NoSchedule#删除taintkubectl taint node knative-node1 foo=bar:NoSchedule-

​​2.4. 将Pod的开放端口映射到本地​​

把Pod的80端口映射到本地的8888端口

kubectl port-forward --address 0.0.0.0 8888:80

​​3.5. 在Pod和本地之间复制文件​​

kubectl cp :/etc/hosts /tmpkubectl cp :/tmp/java.out /root/java.out -c 容器名 -n #必须指定拷贝到本地的文件名,如/root/java.outkubectl cp /tmp/dir :/tmp/ -c 容器名 -n

​​3.6 启动一个测试DNS的Pod​​

kubectl run dns-test -it --rm --image=busybox:1.28.4 -- sh

​​3.7. 查看pod标签​​

kubectl get pods --show-labels

​​3.8.查看Pod支持的字段​​

kubectl explain pods.spec.containers

​​3.9.列出指定标签的Pod名称​​

kubectl get pod -l app=web -o name

​​查看指定标签使用cpu最高的pod​​

kubectl top pods -l app=web --sort-by="cpu"

四、RC操作

​​4.1. 动态缩放​​

kubectl scale rc myweb --replicas=3

五、Deployment

​​5.1.创建一个Deployment​​

kubectl create deployment web --image=tomcat-app:v1

​​5.2.导出一个标准Deployment的yaml文件​​

#需要删除里面的creationTimestamp: null和status: {}kubectl create deployment web --image=nginx --dry-run=client -o yaml > deployment.template#对现有资源进行导出,内容比较多kubectl get deployment web -o yaml > deployment.template

​​5.3.查看Deployment支持的字段​​

kubectl explain deployment

​​5.4.滚动升级​​

kubectl 更新容器镜像的几种方式

#web为deployment的名字,tomcat-app为容器的名字,tomcat:latest为镜像,--record记录操作日志,方便回滚kubectl set image deployment web tomcat-app=tomcat:latest --record#查看升级状态kubectl rollout status deployment web

滚动升级时,如果镜像版本一致,不会触发pod重建,容器更新

kubectl rollout restart deploy deploy名字 #此命令可以让容器重新部署

​​5.5.版本回滚​​

#查看Deployment部署过的版本kubectl rollout history deployment web#回滚到上一个版本kubectl rollout undo deployment web#回滚到指定版本kubectl rollout undo deployment web --to-revision=2

​​5.6.弹性伸缩​​

#至少有3个Pod,当该Deployment下的所有Pod的CPU使用率之和达到80%时会扩容Pod到4~10个之间kubectl autoscale deployment web --min=3 --max=10 --cpu-percent=80#上述命令会创建一个HPAkubectl get hpa

六、Service

​​6.1.发布一个服务​​

kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort

--port=80 #该Service监听的端口,可以通过Cluster IP+该端口访问--target-port=8080 #业务容器监听的端口--type=NodePort #采用NodePort类型,系统会随机分配一个端口供外部访问

curl 10.1.170.105

​​6.2.导出一个标准Service的yaml文件​​

#需要删除里面的creationTimestamp: null、status: 和loadBalancer: {}kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort --dry-run=client -o yaml > service.template

七、命名空间

​​7.1.创建名字为cka的命名空间​​

kubectl create ns cka

​​7.2.给命名空间设置标签​​

kubectl label namespaces default testing=truekubectl label namespaces default testing- #删除标签

八、Node

​​8.1.给节点加污点,不往上面调度Pod​​

kubectl cordon 节点名

​​8.2.给节点打标签​​

kubectl label node 节点名 nodeType=devkubectl label node 节点名 nodeType- #删除标签

​​查看node污点​​

kubectl get nodes k8s-master -o go-template={{.spec.taints}}

九、PV

​​9.1.按容量进行排序​​

kubectl get pv --sort-by={.spec.capacity.storage}

十、实战

​​删除k8s节点​​

#设置不可调度kubectl cordon 节点名#驱逐podkubectl drain 节点名 --delete-local-data --ignore-daemonsets#检查pod是否全部驱逐成功kubectl describe nodes 节点名#摘除集群kubectl delete nodes 节点名

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:K8S在一个Pod中创建多个容器
下一篇:休克文案:100条新消费品牌真相!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~