kubectl :命令技巧大全_kubectl cp,2024年最新分享面经

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

$ kubectl create -f ./my1.yaml -f ./my2.yaml # 使用多个文件创建资源
$ kubectl create -f ./dir # 使用目录下的所有清单文件来创建资源
$ kubectl create -f https://git.io/vPieo # 使用 url 来创建资源
$ kubectl run nginx --image=nginx # 启动一个 nginx 实例
$ kubectl explain pods,svc # 获取 pod 和 svc 的文档

从 stdin 输入中创建多个 YAML 对象

$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
spec:
containers:

  • name: busybox
    image: busybox
    args:
    • sleep
    • “1000000”

apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:

  • name: busybox
    image: busybox
    args:
    • sleep
    • “1000”
      EOF

创建包含几个 key 的 Secret

$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: $(echo “s33msi4” | base64)
username: $(echo “jane” | base64)
EOF


### 显示和查找资源



> 
> #查看资源  
>  kubectl get nodes|namespaces|services|pods|rc|deployments|replicasets(rs) -o wide
> 
> 
> #查看资源详细描述  
>  kubectl describe ${type} ${name} -o wide
> 
> 
> 查看kube-system namespace下面的pod/svc/deployment 等等(**-o wide 选项可以查看存在哪个对应的节点**)
> 
> 
> kubectl get pod/svc/deployment -n kube-system
> 
> 
> 查看所有namespace下面的pod/svc/deployment等等
> 
> 
> kubectl get pod/svc/deployment --all-namcpaces
> 
> 
> 



Get commands with basic output

$ kubectl get services # 列出所有 namespace 中的所有 service
$ kubectl get pods --all-namespaces # 列出所有 namespace 中的所有 pod
$ kubectl get pods -o wide # 列出所有 pod 并显示详细信息
$ kubectl get deployment my-dep # 列出指定 deployment
$ kubectl get pods --include-uninitialized # 列出该 namespace 中的所有 pod 包括未初始化的

使用详细输出来描述命令

$ kubectl describe nodes my-node
$ kubectl describe pods my-pod

$ kubectl get services --sort-by=.metadata.name # List Services Sorted by Name

根据重启次数排序列出 pod

$ kubectl get pods --sort-by=‘.status.containerStatuses[0].restartCount’

获取所有具有 app=cassandra 的 pod 中的 version 标签

$ kubectl get pods --selector=app=cassandra -o
jsonpath=‘{.items[*].metadata.labels.version}’

获取所有节点的 ExternalIP

$ kubectl get nodes -o jsonpath=‘{.items[*].status.addresses[?(@.type==“ExternalIP”)].address}’

列出属于某个 PC 的 Pod 的名字

“jq”命令用于转换复杂的 jsonpath,参考 https://stedolan.github.io/jq/

$ sel=KaTeX parse error: Expected '}', got 'EOF' at end of input: {(kubectl get rc my-rc --output=json | jq -j ‘.spec.selector | to_entries | .[] | “(.key)=(.value),”’)%?}
$ echo ( k u b e c t l g e t p o d s − − s e l e c t o r = (kubectl get pods --selector= (kubectlgetpodsselector=sel --output=jsonpath={.items…metadata.name})

查看哪些节点已就绪

$ JSONPATH=‘{range .items[]}{@.metadata.name}:{range @.status.conditions[]}{@.type}={@.status};{end}{end}’
&& kubectl get nodes -o jsonpath=“$JSONPATH” | grep “Ready=True”

列出当前 Pod 中使用的 Secret

$ kubectl get pods -o json | jq ‘.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name’ | grep -v null | sort | uniq


### 更新资源



> 
> #删除资源  
>  kubectl delete ${type} ${name} -o wide
> 
> 
> #给node/pod添加标签 (增加lable值 [key]=[value])
> 
> 
> * **kubectl label nodes** kube-node **node=kube-node**
> * **kubectl label pod** redis-master-1033017107-q47hh **role=master**
> 
> 
> #给node/pod删除标签(删除lable值)
> 
> 
> * **kubectl label nodes** kube-node **node-**
> * **kubectl label pod** redis-master-1033017107-q47hh **role-**
> 
> 
> #根据标签查询节点
> 
> 
> * ```
> kubectl get pods --show-labels  #查看pod所有标签信息
> kubectl get pods -l app  #过滤包含app的标签
> kubectl get pods -L app    #过滤包含app的标签及显示值
> ```
> 
> 
> 



$ kubectl rolling-update frontend-v1 -f frontend-v2.json # 滚动更新 pod frontend-v1
$ kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2 # 更新资源名称并更新镜像
$ kubectl rolling-update frontend --image=image:v2 # 更新 frontend pod 中的镜像
$ kubectl rolling-update frontend-v1 frontend-v2 --rollback # 退出已存在的进行中的滚动更新
$ cat pod.json | kubectl replace -f - # 基于 stdin 输入的 JSON 替换 pod

强制替换,删除后重新创建资源。会导致服务中断。

$ kubectl replace --force -f ./pod.json

为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口

$ kubectl expose rc nginx --port=80 --target-port=8000

更新单容器 pod 的镜像版本(tag)到 v4

$ kubectl get pod mypod -o yaml | sed ‘s/(image: myimage):.*$/\1:v4/’ | kubectl replace -f -

$ kubectl label pods my-pod new-label=awesome # 添加标签
$ kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # 添加注解
$ kubectl autoscale deployment foo --min=2 --max=10 # 自动扩展 deployment “foo”


#### kubectl set image



> 
> 更新现有的资源对象的容器镜像。
> 
> 
> 可使用资源对象包括(不区分大小写):
> 
> 
> pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)
> 
> 
> 


#### 语法



> 
> 
> ```
> $ image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N
> ```
> 
> 


#### 示例



> 
> 将deployment中的nginx容器镜像设置为“nginx:1.9.1”。
> 
> 
> 
> ```
> kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
> 
> ```
> 
> 所有deployment和rc的nginx容器镜像更新为“nginx:1.9.1”
> 
> 
> 
> ```
> kubectl set image deployments,rc nginx=nginx:1.9.1 --all
> 
> ```
> 
> 将daemonset abc的所有容器镜像更新为“nginx:1.9.1”
> 
> 
> 
> ```
> kubectl set image daemonset abc *=nginx:1.9.1
> ```
> 
> 从本地文件中更新nginx容器镜像
> 
> 
> 
> ```
> kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
> ```
> 
> 


#### kubectl rollout



> 
> 对资源进行管理
> 
> 
> 可用资源包括:
> 
> 
> * deployments
> * daemonsets
> 
> 
> 


**子命令**



> 
> * [history]( )(查看历史版本)
> * [pause]( )(暂停资源)
> * [resume]( )(恢复暂停资源)
> * [status]( )(查看资源状态)
> * [undo]( )(回滚版本)
> 
> 
> 


**语法**



> 
> 
> ```
> $ rollout SUBCOMMAND
> ```
> 
> 


**示例**



> 
> 回滚到之前的deployment
> 
> 
> 
> ```
> kubectl rollout undo deployment/abc
> 
> ```
> 
> 查看daemonet的状态
> 
> 
> 
> ```
> kubectl rollout status daemonset/foo
> ```
> 
> 暂停正在滚动升级的deployment
> 
> 
> kubectl rollout pause deployment  web-demo -n dev
> 
> 
> 


### 修补资源


使用策略合并补丁并修补资源。



$ kubectl patch node k8s-node-1 -p ‘{“spec”:{“unschedulable”:true}}’ # 部分更新节点

更新容器镜像; spec.containers[*].name 是必须的,因为这是合并的关键字

$ kubectl patch pod valid-pod -p ‘{“spec”:{“containers”:[{“name”:“kubernetes-serve-hostname”,“image”:“new image”}]}}’

使用具有位置数组的 json 补丁更新容器镜像

$ kubectl patch pod valid-pod --type=‘json’ -p=‘[{“op”: “replace”, “path”: “/spec/containers/0/image”, “value”:“new image”}]’

使用具有位置数组的 json 补丁禁用 deployment 的 livenessProbe

$ kubectl patch deployment valid-deployment --type json -p=‘[{“op”: “remove”, “path”: “/spec/template/spec/containers/0/livenessProbe”}]’


### 编辑资源


在编辑器中编辑任何 API 资源。



$ kubectl edit svc/docker-registry # 编辑名为 docker-registry 的 service
$ KUBE_EDITOR=“nano” kubectl edit svc/docker-registry # 使用其它编辑器


### Scale 资源



$ kubectl scale --replicas=3 rs/foo # Scale a replicaset named ‘foo’ to 3
$ kubectl scale --replicas=3 -f foo.yaml # Scale a resource specified in “foo.yaml” to 3
$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql # If the deployment named mysql’s current size is 2, scale mysql to 3
$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz # Scale multiple replication controllers


### 删除资源



> 
> #删除资源  
>  kubectl delete ${type} ${name} -o wide
> 
> 
> **删除kube-system 下Evicted状态的所有pod:**
> 
> 
> kubectl get pods -n kube-system |grep Evicted| awk '{print $1}'|xargs kubectl delete pod -n kube-system
> 
> 
> 



$ kubectl delete -f ./pod.json # 删除 pod.json 文件中定义的类型和名称的 pod
$ kubectl delete pod,service baz foo # 删除名为“baz”的 pod 和名为“foo”的 service
$ kubectl delete pods,services -l name=myLabel # 删除具有 name=myLabel 标签的 pod 和 serivce
$ kubectl delete pods,services -l name=myLabel --include-uninitialized # 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
$ kubectl -n my-ns delete po,svc --all # 删除 my-ns namespace 下的所有 pod 和 serivce,包括尚未初始化的


### 与运行中的 Pod 交互


#### kubectl logs


输出pod中一个容器的日志。如果pod只包含一个容器则可以省略容器名。



> 
> 
> ```
> kubectl logs [-f] [-p] POD [-c CONTAINER]
> 
> ```
> 
> kubectl logs 选项
> 
> 
> 
> ```
>   -c, --container="": 容器名。
>   -f, --follow[=false]: 指定是否持续输出日志。
>       --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
>       --limit-bytes=0: 输出日志的最大字节数。默认无限制。
>   -p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
>       --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
>       --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
>       --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
>       --timestamps[=false]: 在日志中包含时间戳。
> ```
> 
> 



返回仅包含一个容器的pod nginx的日志快照

$ kubectl logs nginx

返回pod ruby中已经停止的容器web-1的日志快照

$ kubectl logs -p -c ruby web-1

持续输出pod ruby中的容器web-1的日志

$ kubectl logs -f -c ruby web-1

仅输出pod nginx中最近的20条日志

$ kubectl logs --tail=20 nginx

输出pod nginx中最近一小时内产生的所有日志

$ kubectl logs --since=1h nginx




$ kubectl logs my-pod # dump 输出 pod 的日志(stdout)
$ kubectl logs my-pod -c my-container # dump 输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
$ kubectl logs -f my-pod # 流式输出 pod 的日志(stdout)
$ kubectl logs -f my-pod -c my-container # 流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
$ kubectl run -i --tty busybox --image=busybox – sh # 交互式 shell 的方式运行 pod
$ kubectl attach my-pod -i # 连接到运行中的容器
$ kubectl attach -it nginx -c shell # 连接到 shell 容器的 tty
$ kubectl port-forward my-pod 5000:6000 # 转发 pod 中的 6000 端口到本地的 5000 端口
$ kubectl exec my-pod – ls / # 在已存在的容器中执行命令(只有一个容器的情况下)
$ kubectl exec my-pod -c my-container – ls / # 在已存在的容器中执行命令(pod 中有多个容器的情况下)
$ kubectl top pod POD_NAME --containers # 显示指定 pod 和容器的指标度量


### 与节点和集群交互



$ kubectl cordon my-node # 标记 my-node 不可调度
$ kubectl drain my-node # 清空 my-node 以待维护
$ kubectl uncordon my-node # 标记 my-node 可调度
$ kubectl top node my-node # 显示 my-node 的指标度量
$ kubectl cluster-info # 显示 master 和服务的地址
$ kubectl cluster-info dump # 将当前集群状态输出到 stdout
$ kubectl cluster-info dump --output-directory=/path/to/cluster-state # 将当前集群状态输出到 /path/to/cluster-state

如果该键和影响的污点(taint)已存在,则使用指定的值替换

$ kubectl taint nodes foo dedicated=special-user:NoSchedule


### 资源类型


下表列出的是 kubernetes 中所有支持的类型和缩写的别名。




| 资源类型 | 缩写别名 |
| --- | --- |
| `clusters` |  |
| `componentstatuses` | `cs` |
| `configmaps` | `cm` |
| `daemonsets` | `ds` |
| `deployments` | `deploy` |
| `endpoints` | `ep` |
| `event` | `ev` |
| `horizontalpodautoscalers` | `hpa` |
| `ingresses` | `ing` |
| `jobs` |  |
| `limitranges` | `limits` |
| `namespaces` | `ns` |
| `networkpolicies` |  |
| `nodes` | `no` |
| `statefulsets` |  |
| `persistentvolumeclaims` | `pvc` |
| `persistentvolumes` | `pv` |
| `pods` | `po` |
| `podsecuritypolicies` | `psp` |
| `podtemplates` |  |
| `replicasets` | `rs` |
| `replicationcontrollers` | `rc` |
| `resourcequotas` | `quota` |
| `cronjob` |  |
| `secrets` |  |
| `serviceaccount` | `sa` |
| `services` | `svc` |
| `storageclasses` |  |
| `thirdpartyresources` |


#### 格式化输出


要以特定的格式向终端窗口输出详细信息,可以在 `kubectl` 命令中添加 `-o` 或者 `-output` 标志。




| 输出格式 | 描述 |
| --- | --- |
| `-o=custom-columns=<spec>` | 使用逗号分隔的自定义列列表打印表格 |
| `-o=custom-columns-file=<filename>` | 使用 文件中的自定义列模板打印表格 |
| `-o=json` | 输出 JSON 格式的 API 对象 |
| `-o=jsonpath=<template>` | 打印 [jsonpath]( ) 表达式中定义的字段 |
| `-o=jsonpath-file=<filename>` | 打印由 文件中的 [jsonpath]( ) 表达式定义的字段 |
| `-o=name` | 仅打印资源名称 |
| `-o=wide` | 以纯文本格式输出任何附加信息,对于 Pod ,包含节点名称 |
| `-o=yaml` | 输出 YAML 格式的 API 对象 |


#### Kubectl 详细输出和调试


使用 `-v` 或 `--v` 标志跟着一个整数来指定日志级别。[这里]( ) 描述了通用的 kubernetes 日志约定和相关的日志级别。




| 详细等级 | 描述 |
| --- | --- |
| `--v=0` | 总是对操作人员可见。 |
| `--v=1` | 合理的默认日志级别,如果您不需要详细输出。 |
| `--v=2` | 可能与系统的重大变化相关的,有关稳定状态的信息和重要的日志信息。这是对大多数系统推荐的日志级别。 |
| `--v=3` | 有关更改的扩展信息。 |
| `--v=4` | 调试级别详细输出。 |
| `--v=6` | 显示请求的资源。 |
| `--v=7` | 显示HTTP请求的header。 |
| `--v=8` | 显示HTTP请求的内容。 |


## 其他特殊命令:


### 1. 在没有pod 的yaml文件时,强制重启某个pod



kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -


### 2. kubectl cp 用于pod和外部的文件交换,比如如下示例了如何在进行内外文件交换


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



[[email protected] tmp]# kubectl exec -it mysql-478535978-1dnm2 sh

pwd

/

cd /tmp

echo “this is a message from hostname” >message.log

cat message.log

this is a message from mysql-478535978-1dnm2

exit


拷贝出来并确认



[[email protected]-1 tmp]# kubectl cp mysql-478535978-1dnm2:/tmp/message.log message.log
tar: Removing leading `/’ from member names
[[email protected]-1 tmp]# cat message.log
this is a message from mysql-478535978-1dnm2


更改message.log并拷贝回pod



[[email protected]-1 tmp]# echo “information added in hostname” >>message.log
[[email protected]-1 tmp]# cat message.log
this is a message from mysql-478535978-1dnm2
information added in ku8-1
[[email protected]-1 tmp]# kubectl cp message.log mysql-478535978-1dnm2:/tmp/message.log


确认更改后的信息



[[email protected]-1 tmp]# kubectl exec mysql-478535978-1dnm2 cat /tmp/message.log
this is a message from mysql-478535978-1dnm2
information added in ku8-1


### 3 kubernetes1.16:cs接口废弃,如何查看集群状态


kubernetes 在1.16版本的时候cs接口算是正式废弃掉了,表现如下



bash-5.0# kubectl get cs
NAME AGE
controller-manager
scheduler
etcd-2
etcd-0
etcd-1


那如果还要使用cs接口怎么办呢,可以试试如下命令



bash-5.0# kubectl get cs -o=go-template=‘{{printf “NAME\t\t\tHEALTH_STATUS\tMESSAGE\t\n”}}{{range .items}}{{$name := .metadata.name}}{{range .conditions}}{{printf “%-24s%-16s%-20s\n” $name .status .message}}{{end}}{{end}}’
NAME HEALTH_STATUS MESSAGE
scheduler True ok
controller-manager True ok
etcd-1 True {“health”:“true”}
etcd-0 True {“health”:“true”}
etcd-2 True {“health”:“true”}


### 4. 日常操作命令 ​​​​​​​



根据overlay2目录名找容器

docker ps -q | xargs docker inspect --format ‘{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}’

调试coredns

kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools

查看资源使用情况
kubectl get nodes --no-headers | awk ‘{print $1}’ | xargs -I {} sh -c “echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve --;”

#查看资源总情况
kubectl get no -o=custom-columns=“NODE:.metadata.name,ALLOCATABLE CPU:.status.allocatable.cpu,ALLOCATABLE MEMORY:.status.allocatable.memory”

#查看CPU分配情况
kubectl get nodes --no-headers | awk ‘{print $1}’ | xargs -I {} sh -c ‘echo -n “{}\t” ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve – | grep cpu | awk ‘’’{print $2$3}‘’‘;’

#查看内存分配情况
kubectl get nodes --no-headers | awk ‘{print $1}’ | xargs -I {} sh -c ‘echo -n “{}\t” ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve – | grep memory | awk ‘’’{print $2$3}‘’‘;’

线程数统计

printf "    NUM  PID\t\tCOMMAND\n" && ps -eLf | awk ‘{$1=null;$3=null;$4=null;$5=null;$6=null;$7=null;$8=null;$9=null;print}’ | sort |uniq -c |sort -rn | head -10

配置默认storageclass

kubectl patch storageclass -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:“true”}}}’

#查看容器名
kubectl get po calibre-web-76b9bf4d8b-2kc5j -o json | jq -j “.spec.containers[].name”

进入容器namespace

docker ps | grep APP_NAME
docker inspect CONTAINER_ID | grep Pid
nsenter -t PID -n

查找非 running 状态的 Pod

kubectl get pods -A --field-selector=status.phase!=Running | grep -v Complete

获取节点列表及其内存容量

kubectl get no -o json |
  jq -r ‘.items | sort_by(.status.capacity.memory)[]|[.metadata.name,.status.capacity.memory]| @tsv’

获取每个节点的Pod数量

kubectl get po -o json --all-namespaces |
  jq ‘.items | group_by(.spec.nodeName) | map({“nodeName”: .[0].spec.nodeName, “count”: length}) | sort_by(.count)’

获取前一个容器的日志

kubectl -n my-namespace logs my-pod –previous

把Secret复制到其他namespace

kubectl get secrets -o json --namespace namespace-old |
  jq ‘.items[].metadata.namespace = “namespace-new”’ |
  kubectl create-f  -

获取K8s的token

kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token

清理K8s基础对象

清理Evicted 状态的 Pod

kubectl get pods --all-namespaces -o wide | grep Evicted | awk ‘{print $1,$2}’ | xargs -L1 kubectl delete pod -n

清理 Error 状态的 Pod

kubectl get pods --all-namespaces -o wide | grep Error | awk ‘{print $1,$2}’ | xargs -L1 kubectl delete pod -n

清理 Completed 状态的 Pod

kubectl get pods --all-namespaces -o wide | grep Completed | awk ‘{print $1,$2}’ | xargs -L1 kubectl delete pod -n

清理没有被使用的 PV

kubectl describe -A pvc | grep -E “Name:.*$|^Namespace:.*$|Used By:. " ∣ g r e p − B 2 " < n o n e > " ∣ g r e p − E " N a m e : . ∗ " | grep -B 2 "<none>" | grep -E "^Name:.* "∣grepB2"<none>"∣grepE"Name:.|^Namespace:.$” | cut -f2 -d: | paste -d " " - - | xargs -n2 bash -c ‘kubectl -n ${1} delete pvc ${0}’

清理没有被绑定的 PVC

kubectl get pvc --all-namespaces | tail -n +2 | grep -v Bound | awk ‘{print $1,$2}’ | xargs -L1 kubectl delete pvc -n

清理没有被绑定的 PV

kubectl get pv | tail -n +2 | grep -v Bound | awk ‘{print $1}’ | xargs -L1 kubectl delete pv

Docker清理

查看磁盘使用情况

docker system df

清理 none 镜像

docker images | grep none | awk ‘{print $3}’ | xargs docker rmi

清理不再使用的数据卷

docker volume rm $(docker volume ls -q)

或者

docker volume prune

清理缓存

docker builder prune

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
28道zookeeper**

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-Uo6sa6lQ-1713142481522)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值