K8s常用命令(一)

一、 查看集群信息

1.1、 集群健康
#查看集群信息

kubectl cluster-info

看整体的全部信息

kubectl cluster-info dump

1.2、 组件健康

systemctl status kube-apiserver
systemctl status kubelet
systemctl status kube-proxy
systemctl status kube-scheduler
systemctl status kube-controller-manager
systemctl status docker

2、 资源对象管理

2.1、命令式资源对象管理直接通过命令执行增删改查的操作 除了删除资源外,下面的命令能用apply代替,k8s建议尽量使用apply命令。

创建资源

Kubectl create deployment my-dep --image=busybox
Kubectl expose rc nginx --port=80 --target-port=8000

更新资源

Kubectl scale –replicas=3 -f foo.yaml
Kubectl annotate pods foo description=’my frontend’
Kubectl label –overwrite pods foo status=unhealthy

删除资源

Kubectl delete -f xxx.yaml
Kubectl delete pod,service baz foo
Kubectl delete pods,services -l name=myLabel
Kubectl delete pod foo –-grace-period=0 –force

例子

Kubectl create deployment dp1 –-image=harbor.od.com/nginx:curl
Kubectl expose deployment dp1 –-port=80

Kubectl run dp2 --image=nginx:curl –port=80

2.2、声明式资源对象管理
#kubectl apply命令是最能体现对集群资源的声明式管理的命令
#所有对集群的增改操作,都能用apply命令完成,一切取决于后面的配置文件:
#所有配置文件中的资源找集群中不存在,则创建这个资源。
#如果配置文件中的资源在集群中已存在,则根据配置对资源字段进行更新

部署一个goweb应用,默认pod数为4个

Grep replicas deployment-goweb.yaml
Replicas:4

使用apply创建资源

kubectl apply -f deployment-goweb.yaml
kubectl get po

#修改为2个

Sed -ri ‘s/4$/2/g’ deployment-goweb.yaml
Grep replicas deployment-goweb.yaml
Replicas:2

使用apply更新资源

Kubectl apply -f deployment-goweb.yaml
Kubectl get po

pod数已更新为2个

可以看到,同一个kubectl apply -f deployment-goweb.yaml 命令,可以用来创建资源也可以更新资源。
简单来说,apply命令的作用就是一个:使集群的实际状态朝用户声明的期望状态变化,而用户不用关心具体要进行怎样的增删改操作才能达到这个期望状态,也即kubernetes的声明式资源管理。

声明式操作 – 创建和删除

Kubectl create -f dashboard-controller.yaml
Kubectl apply -f dashboard-dashboard.yaml
Kubectl delete -f dashboard-dashboard.yaml

2.3、使用dashboard
#token方式登录
#kubeconfig方式登录

3、显示配置
#显示当前kubectl的配置信息
Kubectl config view

4、导出定义

Kubectl get po pod-redis -o yaml
Kubectl get po pod-redis -o json

5、日志操作

#查看日志
#查看指定镜像的日志

Kubectl logs -f kube-dns-699984412-vzlq6 -n kube-system

Kubectl logs --tail=10 nginx

#指定其中一个查看日志

Kubectl logs kube-dns-699984412 -n5zkz -c kubedns -–namespace=kube-system
Kubectl logs kube-dns-699984412 -vzlq6 -c dnsmasq -–namespace=kube-system
Kubectl logs kube-dns-699984412 -mqb14 -c sidecar –-namespace=kube-system

看日志

Journalctl -f

6、设置默认storageclass

#设置storageclass为默认 Kubectl patch storageclass -p ‘{“metadata”:
{“annotations”:{“storageclass.kubernetes.io/is-default-class”:”true”}}}’
7、帮助
##kubectl官方命令行工具
#与apiserver通信,将用户输入命令转化为apiserver能识别的信息
#管理k8s各种资源

Kubectl –-version
Kubectl -–help

##kubectl explain命令输出资源对应的属性字段及定义

Kubectl explain deployment.spec.selector
Kubectl explain pod.spec.containers.ports.containerport

二、 操作资源对象

操作ns

1.1、 常规操作

Kubectl create ns app
Kubectl get ns
Kubectl get namespaces
Kubectl delete ns app

1.2、 使用ns

Kubectl get all -n default
Kubectl get all -n kube-system
Kubectl get all -n kube-public

2、 操作node
2.1、查看node
#查看nodes节点

Kubectl get nodes

2.2、隔离与恢复

Kubectl cordon [nodeid] 标记节点不接受调度
Kubectl uncordon [nodeid] 恢复节点可以接收调度

#Node的隔离

Kubectl cordon k8s-node1

#Node的恢复

Kubectl uncordon k8s-node1

2.3、驱逐pod
Kubectl drain [nodeid] 驱赶该节点上运行的所有容器到其他可用节点

2.4、打标签

为节点增加label

Kubectl label nodes 10.126.72.31 points=test

3、 操作deployment
3.1、常规操作

查询dp

Kubectl get deployment -n kube-public

创建dp

Kubectl create deployment dp1 --image=harbor.od.com/public/nginx:1.7.9 -n kube-public
kubectl run dp2 --image=nginx:1.17.1 --port=80 --namespace dev

删除dp

kubectl delete deployment dp1 -n kube-public

查询dp

kubectl describe deployment dp1 -n kube-public

3.2、扩容dp

扩容dp: 默认创建时只有一个pod资源

kubectl scale deployment dp1 --replicas=2 -n kube-public

3.3、暴露服务

使用dp:暴露服务

kubectl expose deployment dp1 --port=80 -n kube-public

3.5、设置镜像

kubectl set image deploy [deployment-name] [old-image-name]=[new-image-name]为部署设置镜像

3.6、其他pod控制器

kubectl delete rs --all
kubectl delete rc --all

操作pod

4.1、查询容器

kubectl get pod --all-namespaces
kubectl get pod -n kube-public
kubectl get pod -n kube-public -o wide

通过label查询

kubectl get pods -l app=nginx -o yaml |grep podIP

4.2、删除容器

删除所有pods

kubectl delete pods --all

删除所有包含某个lable的pod和service

kubectl delete pods,service -l name=<label-name>

强制删除Terminating状态的pod

kubectl delete deployment kafka -l --force --grace-period=0

4.3进入退出

#进入容器

kubectl exec -it nginx-dp-xxx bash -n kube-public
Docker exec -it 530e bash

#退出容器

4.4、 执行容器命令

kubectl exec kube-dns-699984412 -vz1q6 -n kube-system -c kubedns ifconfig
kubectl exec kube-dns-699984412 -vz1q6 -n kube-system -c kubedns ifconfig /bin/bash

kubectl exec kube-dns-4140740281-pfjhr -c etcd --namespace=kube-system etcdctl get /skydns/local/cluster/default/redis-master

#无线循环命令

while true; do sleep 1; done

查看指定pods的环境变量

kubectl exec xxx env

4.5、文件操作
kubectl cp 用于pod和外部的文件交换

在pod中创建一个文件message.log

kubectl exec mysql-xxx --echo “hello world” > /opt/aa.log
kubectl cp aa.log mysql-xxxx:/opt/aa.log

4.6、监控pod

#定时监控

watch -n 1 “kubectl get pod |grep -C 8 nginx-ds”

当我们发现一个pod迟迟无法创建时,描述一个pods

kubectl describe pod xxx

5、 操作service

#Docker主机开启ipv4/ipv6转发
#当无法curl时,检查宿主机的内核中是否开启了iPv4转发功能

cat /proc/sys/net/ipv4/ip_forward 
0
echo “1” >!$
echo “1” >/proc/sys/net/ipv4/ip_forward

cat /proc/sys/net/ipv4/ip_forward
1

5.1、命令暴露dp为服务

Ipvsadm -Ln
kubectl expose deployment nginx-dp --port=80 -n kube-public
kubectl get svc -n kube-public

#CLUSTER-IP=192.168.27.1

curl 192.168.27.1

#通过ipvs提供了一个稳定的接入点cluster-ip
#k8s集群里的运算节点上能够访问:ping cluster-ip

Ipvsadm -Ln
kubectl describe svc nginx-dp -n kube-public
<think>嗯,用户想了解Kubernetesk8s)的常用命令,我需要整理个清晰的结构来帮助他。首先,我应该回忆k8s的基础命令,比如集群管理、资源查看这些部分。然后考虑用户可能的场景,比如他可能是个刚入门的管理员或者开发者,需要部署应用、调试问题,所以命令需要覆盖这些方面。 接下来,我需要分门别类地组织这些命令。通常,k8s的命令可以分为集群管理、资源操作、调试与日志、配置管理、扩展与自动伸缩、网络相关、存储管理这几个大类。每个类别下再列出常用命令和示例。 要注意用户提到的格式要求,行内数学表达式用$...$,但这里可能不太涉及数学公式,不过要确保所有的代码或命令行参数正确,比如用反引号包裹。同时,中文回答,结构清晰,分步骤说明。 可能还需要提醒用户注意权限问题,比如有些命令需要特定权限,或者不同命名空间的影响。此外,补充些常用技巧,比如别名设置,这样能提升用户的使用效率。 另外,用户可能不仅需要命令列表,还需要些解释,比如每个命令的作用和参数的意义。例如,kubectl get pods 是查看Pod,而-n指定命名空间。这样用户更容易理解何时使用这些命令。 最后,检查是否有遗漏的常用命令,比如滚动更新、回滚、端口转发这些操作,都是日常管理中会用到的。确保覆盖全面,同时不过于冗长,保持简洁明了。</think>以下为Kubernetesk8s常用命令的整理,按照功能分类说明: --- ### 、集群管理 1. **查看集群信息** ```bash kubectl cluster-info ``` 2. **查看节点状态** ```bash kubectl get nodes ``` 3. **查看集群版本** ```bash kubectl version ``` --- ### 二、资源操作 1. **查看资源** ```bash kubectl get <资源类型> # 例如:kubectl get pods kubectl get pods -n <命名空间> # 指定命名空间 kubectl get deployments --all-namespaces # 查看所有命名空间的Deployment ``` 2. **描述资源详情** ```bash kubectl describe <资源类型>/<名称> # 例如:kubectl describe pod/nginx ``` 3. **创建/更新资源** ```bash kubectl apply -f <yaml文件> # 通过YAML文件创建或更新资源 ``` 4. **删除资源** ```bash kubectl delete <资源类型>/<名称> # 例如:kubectl delete deployment/nginx kubectl delete -f <yaml文件> # 通过YAML文件删除资源 ``` --- ### 三、调试与日志 1. **查看Pod日志** ```bash kubectl logs <pod名称> -n <命名空间> kubectl logs -f <pod名称> # 实时跟踪日志 ``` 2. **进入Pod执行命令** ```bash kubectl exec -it <pod名称> -- /bin/sh # 进入Pod的Shell环境 ``` 3. **端口转发** ```bash kubectl port-forward <pod名称> <本地端口>:<Pod端口> # 例如:kubectl port-forward nginx 8080:80 ``` --- ### 四、配置管理 1. **查看当前配置** ```bash kubectl config view ``` 2. **切换上下文(集群/用户)** ```bash kubectl config use-context <上下文名称> ``` --- ### 五、扩展与自动伸缩 1. **手动扩展Deployment副本数** ```bash kubectl scale deployment/<名称> --replicas=3 ``` 2. **自动扩缩容(HPA)** ```bash kubectl autoscale deployment/<名称> --min=2 --max=5 --cpu-percent=80 ``` --- ### 六、网络相关 1. **查看Service** ```bash kubectl get services ``` 2. **暴露Service** ```bash kubectl expose deployment/<名称> --type=NodePort --port=80 ``` --- ### 七、存储管理 1. **查看PersistentVolume(PV)** ```bash kubectl get pv ``` 2. **查看PersistentVolumeClaim(PVC)** ```bash kubectl get pvc ``` --- ### 常用技巧 1. **别名简化命令** ```bash alias k="kubectl" # 后续可用 k get pods 代替 kubectl get pods ``` 2. **查看资源简写** ```bash kubectl api-resources # 列出所有资源的缩写(如po=pods, svc=services) ``` 3. **格式化输出** ```bash kubectl get pods -o wide # 显示详细信息 kubectl get pods -o json # JSON格式输出 kubectl get pods -o yaml # YAML格式输出 ``` --- ### 注意事项 1. **命名空间**:默认操作`default`命名空间,使用`-n`指定其他命名空间 2. **权限问题**:部分命令需要`ClusterRole`权限 3. **上下文切换**:多集群环境下需注意当前操作的集群 建议通过`kubectl --help`查看子命令帮助文档,例如`kubectl get --help`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小竹吟風

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值