千家信息网

Kubernetes的实用技巧有哪些

发表于:2025-11-21 作者:千家信息网编辑
千家信息网最后更新 2025年11月21日,本篇内容主要讲解"Kubernetes的实用技巧有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Kubernetes的实用技巧有哪些"吧!一、kube
千家信息网最后更新 2025年11月21日Kubernetes的实用技巧有哪些

本篇内容主要讲解"Kubernetes的实用技巧有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Kubernetes的实用技巧有哪些"吧!

一、kubectl 命令参数自动补全

使用 Kubernetes,就一定会使用 Kubectl 命令,默认安装好 Kubectl 命令不支持自动补全参数。下面配置 Kubectl 命令参数自动补全方法:

Linux 上,比如 Centos

$ yum install -y bash-completion $ source /usr/share/bash-completion/bash_completion $ source <(kubectl completion bash) $ echo "source <(kubectl completion bash)" >> ~/.bashrc

MAC 上

$ brew install bash-completion $ source $(brew --prefix)/etc/bash_completion $ source <(kubectl completion zsh) $ echo 'source <(kubectl completion zsh)' >> ~/.zshrc

Kubectl 常用操作 [1]

1、如何查找非 running 状态的 Pod 呢?

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

2、如何查找 running 状态的 Pod 呢?

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

3、获取节点列表,其中包含运行在每个节点上的 Pod 数量?

$ kubectl get po -o json --all-namespaces |    jq '.items | group_by(.spec.nodeName) | map({"nodeName": .[0].spec.nodeName, "count": length}) | sort_by(.count)'  [   {     "nodeName": "service1",     "count": 6   },   {     "nodeName": "service3",     "count": 13   } ]

4、使用 kubectl top 获取 Pod 列表并根据其消耗的 CPU 或 内存进行排序

# 获取 cpu $ kubectl top pods -A | sort --reverse --key 3 --numeric  # 获取 memory $ kubectl top pods -A | sort --reverse --key 4 --numeric

二、添加Namespace默认CPU和内存限制

有时候 Pod 没有做资源限制,会因为个别 Pod 使用量超出,影响整个宿主机应用。下面给出一个具体例子,可以根据实际情况来调整相关参数。

apiVersion: "v1" kind: "LimitRange" metadata:   name: "resource-limits"   namespace: default spec:   limits:     - type: "Pod"       max:         cpu: "4"         memory: "4Gi"       min:         cpu: "100m"         memory: "100Mi"     - type: "Container"       max:         cpu: "4"         memory: "4Gi"       min:         cpu: "100m"         memory: "100Mi"       default:         cpu: "500m"         memory: "500Mi"       defaultRequest:         cpu: "100m"         memory: "100Mi"       maxLimitRequestRatio:         cpu: "60"

三、利用 Kubelet 给 Node 预留资源

evictionHard:   imagefs.available: 15%   memory.available: 1G   nodefs.available: 10%   nodefs.inodesFree: 5%

四、利用 Kubernetes RBAC 划分好权限

多个团队部署应用到一个kubernetes集群时,情况就可能变得很复杂。切记不要把管理员权限开放给每个人。个人建议是,根据命名空间来区分隔离每个团队,然后使用RBAC策略只允许各自团队访问各自的命名空间。

如果我们把管理员权限开放给每个人,那么在pod级上进行读取、创建和删除访问时,可能让人抓狂,因为误操作的情况会经常发生。为此,应该只允许管理员有权访问,从而将管理集群和部署集群的人员权限区分开。

五、充分利用 PodDisruptionBudget 控制器

如何保证在 kubernetes 集群中的应用程序总能正常运行?

答案:是使用 PodDisruptionBudget 控制器。

在进行 kubectl drain 操作时,kubernetes 会根据 PodDisruptionBudget 控制器判断应用Pod集群数量,进而保证在业务不中断或业务SLA不降级的情况下进行应用Pod销毁。PDB(PodDisruptionBudget)应该放在每个拥有一个以上实例的deployment上。我们可以使用简单yaml为集群创建PDB,并使用标签选择器确定PDB应该作用在哪些带有标签的资源上。

  • 注意:PDB只考虑主动中断,硬件故障之类的情况不在PDB考虑范围内。

例子:

apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata:   name: zk-pdb spec:   minAvailable: 2   selector:     matchLabels:       app: zookeeper

六、使用探针来检测应用的状态

Kubernetes 支持配置探针。kubelet 使用探针来确定Pod中应用程序是否健康。K8S 提供了两种类型来实现这一功能,Readiness 探针和 Liveiness 探针。

  • Readiness:探针用于确定容器何时准备好接收流量。

  • Liveiness:探针用于确定容器是否健康,如果不健康根据策略判断是否重新部署一个新的容器来替换。

例子:

readinessProbe:   tcpSocket:     port: 8080   initialDelaySeconds: 5   periodSeconds: 10 livenessProbe:   tcpSocket:     port: 8080   initialDelaySeconds: 15   periodSeconds: 20

到此,相信大家对"Kubernetes的实用技巧有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

探针 应用 集群 情况 实用 参数 命令 权限 管理 实用技巧 技巧 健康 例子 团队 容器 控制器 状态 管理员 资源 控制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库管理考试技巧 软件开发单招考试报几类 沧州师范学院计算机网络技术 小米网络安全好玩吗 企业内部网络安全管理制度 邹平设备软件开发价格 多识网络技术有限公司 战地5哪些服务器没有外挂 命令提示没有代理服务器 违反网络安全检查检讨书 长宁区市场软件开发售后保障 社会网络安全ppt 战地五服务器管理员怎么操作 网络安全和5g有没有关系 网络安全政府主管企业主责 广州新华互联网科技学校有疫情不 战地1怎么续费服务器 网络安全交互稿视觉稿 psv黑商店更新数据库 无线网络安全的发展前景 惠州易通网络技术有限公司 网络安全歌谣顺口溜新闻 数据库安全性的定义是什么 天津网络安全竞赛报名 上海本地软件开发市场价 交换机需要连接服务器吗 邹平设备软件开发价格 无线传感器网络技术试题及答案 机长网络技术有限公司 天河物联网软件开发
0