《重识云原生系列》专题索引:

  1. 第一章——不谋全局不足以谋一域
  2. 第二章计算第1节——计算虚拟化技术总述
  3. 第二章计算第2节——主流虚拟化技术之VMare ESXi
  4. 第二章计算第3节——主流虚拟化技术之Xen
  5. 第二章计算第4节——主流虚拟化技术之KVM
  6. 第二章计算第5节——商用云主机方案
  7. 第二章计算第6节——裸金属方案
  8. 第三章云存储第1节——分布式云存储总述
  9. 第三章云存储第2节——SPDK方案综述
  10. 第三章云存储第3节——Ceph统一存储方案
  11. 第三章云存储第4节——OpenStack Swift 对象存储方案
  12. 第三章云存储第5节——商用分布式云存储方案
  13. 第四章云网络第一节——云网络技术发展简述
  14. 第四章云网络4.2节——相关基础知识准备
  15. 第四章云网络4.3节——重要网络协议
  16. 第四章云网络4.3.1节——路由技术简述
  17. 第四章云网络4.3.2节——VLAN技术
  18. 第四章云网络4.3.3节——RIP协议
  19. 第四章云网络4.3.4节——OSPF协议
  20. 第四章云网络4.3.5节——EIGRP协议
  21. 第四章云网络4.3.6节——IS-IS协议
  22. 第四章云网络4.3.7节——BGP协议
  23. 第四章云网络4.3.7.2节——BGP协议概述
  24. 第四章云网络4.3.7.3节——BGP协议实现原理
  25. 第四章云网络4.3.7.4节——高级特性
  26. 第四章云网络4.3.7.5节——实操
  27. 第四章云网络4.3.7.6节——MP-BGP协议
  28. 第四章云网络4.3.8节——策略路由
  29. 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
  30. 第四章云网络4.3.10节——VXLAN技术
  31. 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
  32. 第四章云网络4.3.10.3节——VXLAN隧道机制
  33. 第四章云网络4.3.10.4节——VXLAN报文转发过程
  34. 第四章云网络4.3.10.5节——VXlan组网架构
  35. 第四章云网络4.3.10.6节——VXLAN应用部署方案
  36. 第四章云网络4.4节——Spine-Leaf网络架构
  37. 第四章云网络4.5节——大二层网络
  38. 第四章云网络4.6节——Underlay 和 Overlay概念
  39. 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
  40. 第四章云网络4.7.2节——virtio网络半虚拟化简介
  41. 第四章云网络4.7.3节——Vhost-net方案
  42. 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
  43. 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
  44. 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
  45. 第四章云网络4.7.8节——SR-IOV方案
  46. 第四章云网络4.7.9节——NFV
  47. 第四章云网络4.8.1节——SDN总述
  48. 第四章云网络4.8.2.1节——OpenFlow概述
  49. 第四章云网络4.8.2.2节——OpenFlow协议详解
  50. 第四章云网络4.8.2.3节——OpenFlow运行机制
  51. 第四章云网络4.8.3.1节——Open vSwitch简介
  52. 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
  53. 第四章云网络4.8.4节——OpenStack与SDN的集成
  54. 第四章云网络4.8.5节——OpenDayLight
  55. 第四章云网络4.8.6节——Dragonflow
  56. 第四章云网络4.9.1节——网络卸载加速技术综述

  57. 第四章云网络4.9.2节——传统网络卸载技术

  58. 第四章云网络4.9.3.1节——DPDK技术综述

  59. 第四章云网络4.9.3.2节——DPDK原理详解

  60. 第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述

  61. 第四章云网络4.9.4.2节——智能网卡实现

  62. 第六章容器6.1.1节——容器综述

  63. 第六章容器6.1.2节——容器安装部署

  64. 第六章容器6.1.3节——Docker常用命令

  65. 第六章容器6.1.4节——Docker核心技术LXC

  66. 第六章容器6.1.5节——Docker核心技术Namespace

  67. 第六章容器6.1.6节—— Docker核心技术Chroot

  68. 第六章容器6.1.7.1节——Docker核心技术cgroups综述

  69. 第六章容器6.1.7.2节——cgroups原理剖析

  70. 第六章容器6.1.7.3节——cgroups数据结构剖析

  71. 第六章容器6.1.7.4节——cgroups使用

  72. 第六章容器6.1.8节——Docker核心技术UnionFS

  73. 第六章容器6.1.9节——Docker镜像技术剖析

  74. 第六章容器6.1.10节——DockerFile解析

  75. 第六章容器6.1.11节——docker-compose容器编排

  76. 第六章容器6.1.12节——Docker网络模型设计

  77. 第六章容器6.2.1节——Kubernetes概述

  78. 第六章容器6.2.2节——K8S架构剖析

  79. 第六章容器6.3.1节——K8S核心组件总述

  80. 第六章容器6.3.2节——API Server组件

  81. 第六章容器6.3.3节——Kube-Scheduler使用篇

  82. 第六章容器6.3.4节——etcd组件

  83. 第六章容器6.3.5节——Controller Manager概述

  84. 第六章容器6.3.6节——kubelet组件

  85. 第六章容器6.3.7节——命令行工具kubectl

  86. 第六章容器6.3.8节——kube-proxy

  87. 第六章容器6.4.1节——K8S资源对象总览

  88. 第六章容器6.4.2.1节——pod详解

  89. 第六章容器6.4.2.2节——Pod使用(上)

  90. 第六章容器6.4.2.3节——Pod使用(下)

  91. 第六章容器6.4.3节——ReplicationController

  92. 第六章容器6.4.4节——ReplicaSet组件

  93. 第六章容器基础6.4.5.1节——Deployment概述

  94. 第六章容器基础6.4.5.2节——Deployment配置详细说明

  95. 第六章容器基础6.4.5.3节——Deployment实现原理解析

  96. 第六章容器基础6.4.6节——Daemonset

  97. 第六章容器基础6.4.7节——Job

  98. 第六章容器基础6.4.8节——CronJob

1 kubectl

kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。kubectl安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeconfig环境变量或设置--kubeconfig来指定其他的kubeconfig文件。kubectl通过与apiserver交互可以实现对k8s集群中各种资源的增删改查。

kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能。这里不再罗列各种子命令的格式,而是介绍下如何查询命令的帮助:

  • kubectl -h 查看子命令列表
  • kubectl options 查看全局选项
  • kubectl --help 查看子命令的帮助
  • kubectl [command] [PARAMS] -o= 设置输出格式(如 json、yaml、jsonpath 等)
  • kubectl explain [RESOURCE] 查看资源的定义

1.1 配置

使用 kubectl 的第一步是配置 Kubernetes 集群以及认证方式,包括:

  • cluster 信息:Kubernetes server 地址
  • 用户信息:用户名、密码或密钥
  • Context:cluster、用户信息以及 Namespace 的组合

示例

kubectl config set-credentials myself --username=admin --password=secret
kubectl config set-cluster local-server --server=http://localhost:8080
kubectl config set-context default-context --cluster=local-server --user=myself --namespace=default
kubectl config use-context default-context
kubectl config view

1.2 集群内身份验证和命名空间覆盖

默认情况下,kubectl 命令首先确定它是否在 Pod 中运行,从而被视为在集群中运行。 它首先检查 KUBERNETES_SERVICE_HOST 和 KUBERNETES_SERVICE_PORT 环境变量以及 /var/run/secrets/kubernetes.io/serviceaccount/token 中是否存在服务帐户令牌文件。 如果三个条件都被满足,则假定在集群内进行身份验证。

为保持向后兼容性,如果在集群内身份验证期间设置了 POD_NAMESPACE 环境变量,它将覆盖服务帐户令牌中的默认命名空间。 任何依赖默认命名空间的清单或工具都会受到影响。

POD_NAMESPACE 环境变量

如果设置了 POD_NAMESPACE 环境变量,对命名空间资源的 CLI 操作对象将使用该变量值作为默认值。 例如,如果该变量设置为 seattle,kubectl get pods 将返回 seattle 命名空间中的 Pod。 这是因为 Pod 是一个命名空间资源,且命令中没有提供命名空间。

直接使用 --namespace  会覆盖此行为。

1.2.1 kubectl 如何处理 ServiceAccount 令牌

假设:

  • 有 Kubernetes 服务帐户令牌文件挂载在 /var/run/secrets/kubernetes.io/serviceaccount/token 上,并且
  • 设置了 KUBERNETES_SERVICE_HOST 环境变量,并且
  • 设置了 KUBERNETES_SERVICE_PORT 环境变量,并且
  • 你没有在 kubectl 命令行上明确指定命名空间。

然后 kubectl 假定它正在你的集群中运行。 kubectl 工具查找该 ServiceAccount 的命名空间 (该命名空间与 Pod 的命名空间相同)并针对该命名空间进行操作。 这与集群外运行的情况不同; 当 kubectl 在集群外运行并且你没有指定命名空间时, kubectl 命令会针对 default 命名空间进行操作。

1.3 kubectl的安装方法

kubectl 的安装方法:

# OS X
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
# Linux
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
# Windows
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl.exe

1.4 kubectl语法

kubectl语法格式如下,可在k8s集群的master节点执行:

kubectl [command] [TYPE] [NAME] [flags]

上述语法解释说明:

  • command:指定要对一个或多个资源执行的操作,例如create、get、describe、delete等。
  • type:指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
  • NAME:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息:kubectl get pods。
  • flags: 指定可选的参数。例如,可以使用-s或-server参数指定 Kubernetes API服务器的地址和端口。

注意事项说明:

从命令行指定的参数会覆盖默认值和任何相应的环境变量。

1.在对多个资源执行操作时,可以按类型、名称、一个或者多个文件指定每个资源:

1)按类型和名称指定资源:

a.要对所有类型相同的资源进行分组,请执行以下操作:

TYPE1 name1 name2 name

例子:

kubectl get pod example-pod1 example-pod2

b.分别指定多个资源类型:

TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE/name

例子:

kubectl get pod/example-pod1 deployment/example-rc1

2)用一个或多个文件指定资源:-f file1 -f file2 -f file

使用YAML而不是JSON,因为YAML更容易使用,特别是用于配置文件时。例子:

kubectl get pod -f ./pod.yaml

2.kubectl –-help

可查看kubectl的帮助命令。

2 kubectl命令详解

2.1 常用命令格式

  • 创建:

kubectl run --image= 或者

kubectl create -f manifest.yaml

  • 查询:

kubectl get

  • 更新

kubectl set 或者

kubectl patch

  • 删除:

kubectl delete  或者

kubectl delete -f manifest.yaml

  • 查询 Pod IP:

kubectl get pod -o jsonpath='{.status.podIP}'

  • 容器内执行命令:

kubectl exec -ti sh

  • 容器日志:

kubectl logs [-f]

  • 导出服务:

kubectl expose deploy --port=80

  • Base64 解码:

kubectl get secret SECRET -o go-template='{{ .data.KEY | base64decode }}'

注意,kubectl run 仅支持 Pod、Replication Controller、Deployment、Job 和 CronJob 等几种资源。具体的资源类型是由参数决定的,默认为 Deployment:

创建的资源类型

参数

Pod

--restart=Never

Replication Controller

--generator=run/v1

Deployment

--restart=Always

Job

--restart=OnFailure

CronJob

--schedule=

2.2 命令行自动补全

Linux 系统 Bash:

source /usr/share/bash-completion/bash_completion source <(kubectl completion bash)

MacOS zsh

source <(kubectl completion zsh)

2.3 自定义输出列

比如,查询所有 Pod 的资源请求和限制:

kubectl get pods --all-namespaces -o custom-columns=NS:.metadata.namespace,NAME:.metadata.name,"CPU(requests)":.spec.containers[*].resources.requests.cpu,"CPU(limits)":.spec.containers[*].resources.limits.cpu,"MEMORY(requests)":.spec.containers[*].resources.requests.memory,"MEMORY(limits)":.spec.containers[*].resources.limits.memory

2.4 日志查看

kubectl logs 用于显示 pod 运行中,容器内程序输出到标准输出的内容。跟 docker 的 logs 命令类似。

# Return snapshot logs from pod nginx with only one container
kubectl logs nginx # Return snapshot of previous terminated ruby container logs from pod web-1
kubectl logs -p -c ruby web-1 # Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

注:kubectl 只可以查看单个容器的日志,如果想要同时查看多个 Pod 的日志,可以使用 stern。比如: stern --all-namespaces -l run=nginx。

2.5 连接到一个正在运行的容器

attach 用于连接到一个正在运行的容器。跟 docker 的 attach 命令类似。

# Get output from running pod 123456-7890, using the first container by default
kubectl attach 123456-7890 # Get output from ruby-container from pod 123456-7890
kubectl attach 123456-7890 -c ruby-container # Switch to raw terminal mode, sends stdin to 'bash' in ruby-container from pod 123456-7890 # and sends stdout/stderr from 'bash' back to the client
kubectl attach 123456-7890 -c ruby-container -i -t Options: -c, --container='': Container name. If omitted, the first container in the pod will be chosen-i, --stdin=false: Pass stdin to the container-t, --tty=false: Stdin is a TTY 

2.6 在容器内部执行命令

kubectl exec 用于在一个正在运行的容器执行命令。跟 docker 的 exec 命令类似。

# Get output from running 'date' from pod 123456-7890, using the first container by default
kubectl exec 123456-7890 date # Get output from running 'date' in ruby-container from pod 123456-7890
kubectl exec 123456-7890 -c ruby-container date # Switch to raw terminal mode, sends stdin to 'bash' in ruby-container from pod 123456-7890 # and sends stdout/stderr from 'bash' back to the client
kubectl exec 123456-7890 -c ruby-container -i -t -- bash -il Options: -c, --container='': Container name. If omitted, the first container in the pod will be chosen -p, --pod='': Pod name -i, --stdin=false: Pass stdin to the container -t, --tty=false: Stdin is a TT

2.7 端口转发

kubectl port-forward 用于将本地端口转发到指定的 Pod。

# Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in the
pod kubectl port-forward mypod 5000 6000 # Listen on port 8888 locally, forwarding to 5000 in the pod
kubectl port-forward mypod 8888:5000 # Listen on a random port locally, forwarding to 5000 in the pod
kubectl port-forward mypod :5000 # Listen on a random port locally, forwarding to 5000 in the pod
kubectl port-forward mypod 0:5000

也可以将本地端口转发到服务、复制控制器或者部署的端口。

# Forward to deployment
kubectl port-forward deployment/redis-master 6379:6379 # Forward to replicaSet
kubectl port-forward rs/redis-master 6379:6379 # Forward to service
kubectl port-forward svc/redis-master 6379:6379

2.8 API Server 代理

kubectl proxy 命令提供了一个 Kubernetes API 服务的 HTTP 代理。

$ kubectl proxy --port=8080 Starting to serve on 127.0.0.1:8080

可以通过代理地址 http://localhost:8080/api/ 来直接访问 Kubernetes API,比如查询 Pod 列表:

curl http://localhost:8080/api/v1/namespaces/default/pods

注意,如果通过 --address 指定了非 localhost 的地址,则访问 8080 端口时会报未授权的错误,可以设置 --accept-hosts 来避免这个问题( 不推荐生产环境这么设置 ):

kubectl proxy --address='0.0.0.0' --port=8080 --accept-hosts='^*$'

2.9 文件拷贝

kubectl cp 支持从容器中拷贝,或者拷贝文件到容器中:

# Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod in the default namespace
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir # Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container> # Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace <some-namespace>
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar # Copy /tmp/foo from a remote pod to /tmp/bar locally
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar Options: -c, --container='': Container name. If omitted, the first container in the pod will be chosen

注意:文件拷贝依赖于 tar 命令,所以容器中需要能够执行 tar 命令。

2.10 kubectl drain

kubectl drain NODE [Options]

  • 它会删除该 NODE 上由 ReplicationController, ReplicaSet, DaemonSet, StatefulSet or Job 创建的 Pod
  • 不删除 mirror pods(因为不可通过 API 删除 mirror pods)
  • 如果还有其它类型的 Pod(比如不通过 RC 而直接通过 kubectl create 的 Pod)并且没有 --force 选项,该命令会直接失败
  • 如果命令中增加了 --force 选项,则会强制删除这些不是通过 ReplicationController, Job 或者 DaemonSet 创建的 Pod

有的时候不需要 evict pod,只需要标记 Node 不可调用,可以用 kubectl cordon 命令。

恢复的话只需要运行 kubectl uncordon NODE 将 NODE 重新改成可调度状态。

2.11 权限检查

kubectl auth 提供了两个子命令用于检查用户的鉴权情况:

  • kubectl auth can-i 检查用户是否有权限进行某个操作,比如
# Check to see if I can create pods in any namespace
kubectl auth can-i create pods --all-namespaces # Check to see if I can list deployments in my current namespace
kubectl auth can-i list deployments.extensions # Check to see if I can do everything in my current namespace ("*" means all)
kubectl auth can-i '*' '*' # Check to see if I can get the job named "bar" in namespace "foo"
kubectl auth can-i list jobs.batch/bar -n foo
  • kubectl auth reconcile 自动修复有问题的 RBAC 策略,如
# Reconcile rbac resources from a file
kubectl auth reconcile -f my-rbac-rules.yaml

2.12 模拟其他用户

kubectl 支持模拟其他用户或者组来进行集群管理操作,比如:

kubectl drain mynode --as=superman --as-group=system:masters

这实际上就是在请求 Kubernetes API 时添加了如下的 HTTP HEADER:

Impersonate-User: superman
Impersonate-Group: system:masters

2.13 查看事件(events)

# 查看所有事件
kubectl get events --all-namespaces # 查看名为nginx对象的事件
kubectl get events --field-selector involvedObject.name=nginx,involvedObject.namespace=default # 查看名为nginx的服务事件
kubectl get events --field-selector involvedObject.name=nginx,involvedObject.namespace=default,involvedObject.kind=Service # 查看Pod的事件
kubectl get events --field-selector involvedObject.name=nginx-85cb5867f-bs7pn,involvedObject.kind=Pod

2.14 原始 URI

kubectl 也可以用来直接访问原始 URI,比如要访问 Metrics API 可以:

  • kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
  • kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods
  • kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes/
  • kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespace//pods/

3 kubectl 插件

kubectl 插件提供了一种扩展 kubectl 的机制,比如添加新的子命令。插件可以以任何语言编写,只需要满足以下条件即可:

  • 插件放在 ~/.kube/plugins 或环境变量 KUBECTL_PLUGINS_PATH 指定的目录中
  • 插件的格式为子目录 / 可执行文件或脚本 且子目录中要包括 plugin.yaml 配置文件

比如

$ tree
.
└── hello└── plugin.yaml 1 directory, 1 file $ cat hello/plugin.yaml
name: "hello"
shortDesc: "Hello kubectl plugin!"
command: "echo Hello plugins!" $ kubectl plugin hello
Hello plugins!

你也可以使用 krew 来管理 kubectl 插件。

参考链接

kubectl · Kubernetes指南

kubectl基础命令详解(一)_OSoooo的博客-CSDN博客_kubectl

kubectl简介 - 快乐嘉年华 - 博客园

kubectl工具详解_pipipipe的博客-CSDN博客_kubectl工具

命令行工具 (kubectl) | Kubernetes

kubectl - 知乎

kubectl详解 - 明王不动心 - 博客园

【重识云原生】第六章容器6.3.7节——命令行工具kubectl相关推荐

  1. 【重识云原生】第一章——不谋全局不足以谋一域

    云原生体系知识地图大纲: ​ 锲子 云原生概念这几年非常火爆,本人因有幸参与公司云原生转型项目调研,开始接触这一庞大技术体系,再通过与同业.各大头部云厂商超过150场的密集研讨交流,方得初窥全貌.同时 ...

  2. 【重识云原生】第二章计算第一节——计算虚拟化技术总述

    云平台计算领域知识地图: ​ 楔子:计算虚拟化技术算是云计算技术的擎天之柱,其前两代技术的演进一直引领着云计算的发展,即便到了云原生时代,其作用依然举足轻重. 一.计算虚拟化技术总述 1.1 虚拟化技 ...

  3. 【重识云原生】第六章容器6.3.5节——Controller Manager概述

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  4. 【重识云原生】第六章容器6.1.7.2节——cgroups原理剖析

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  5. 【重识云原生】第六章容器基础6.4.9.2节——使用 Service 连接到应用

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  6. 【重识云原生】第六章容器基础6.4.7.1节——K8S Job组件

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  7. 【重识云原生】第六章容器6.4.2.3节——Pod使用(下)

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  8. 【重识云原生】第六章容器6.1.8节——Docker核心技术UnionFS

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  9. 【重识云原生】第六章容器基础6.4.5.2节——Deployment配置详细说明

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

最新文章

  1. 找到字符串的最长无重复字符子串
  2. Python PhantomJS 爬虫 示例
  3. 树莓派wiringPi库详解
  4. 使用Cobertura,JUnit,HSQLDB,JPA涵盖您的测试
  5. LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)
  6. 【codevs1359】【BZOJ1833】数字计数,进击的学弟与数位DP
  7. SpringMVC→拦截器、SpringMVC拦截器实现、多个拦截器工作原理、拦截器使用场景、拦截器Interceptor与过滤器Filter区别
  8. java将图片灰度化
  9. Your branch is ahead of ‘origin/main‘ by 1 commit.
  10. 【BZOJ4503】两个串(FFT)
  11. kubernetes资源对象--pod和job
  12. 避开ie缓存机制,实时从服务器取得最新数据
  13. python运维和开发实战-高级篇
  14. 高德地图POI数据爬取
  15. unity 游戏版本更新插件
  16. 调优为王!阿里巴巴彩版java性能调优实战,终于到手了!文末福利
  17. 怎么将mp3音乐转成ogg格式
  18. jquery中的ajax写法
  19. 看似落魄的灵魂登场却如此隆重,风 吹散了平庸 爱漫延没有尽头
  20. RegExp抓取图片

热门文章

  1. xargs find -exec,linux 命
  2. 软件工程师成长(大二结束记)
  3. 前端学习路线-学习web前端的最 佳路线:必备javascript书籍【含红宝书和绿皮书、黄宝书等】
  4. 使用pandas的isna方法检查excel是否存在空值
  5. Excel快捷键大全(四)(九耶-钛伦特)
  6. 【python】字典去重
  7. 0.1.13-Python中字符串的下标和切片
  8. ARCore vs ARKit-热核战争的重启?
  9. 计算机辅助英语口语考,计算机辅助英语口语测试形式评析
  10. 大城一中2021高考成绩查询,大城县第一中学近几年高考捷报