分类 Kubernetes 中的文章

Kubernetes开启Swap支持

说明 Kubernetes-1.22 版本引入了 alpha 支持,用于在每个节点的基础上为 Kubernetes 工作负载配置交换内存使用。 在之前的版本中,Kubernetes 不支持在 Linux 上使用交换内存,因为当涉及交换时,很难保证和说明 pod 内存利用率。作为 Kubernetes 早期设计的一部分,交换支持被认为是超出范围的,如果在节点上检测到交换,kubelet 将默认……

阅读全文

Kubernetes 创建普通账号

背景 经常有碰到这种需求: 给某个用户某一指定名称空间下的管理权限 给用户赋予集群的只读权限 … 前提 准备一个 Kubernetes 机群 了解 Kubernetes 的认证授权流程 Linux 下使用 openssl 创建自签证书 一、为用户创建证书 创建证书只是实现 Kubernetes 认证用,具体拥有什么样的权限取决于 RBAC 授权。也就是 Role、ClusterRole。 1.1 创建私钥 1cd /etc/kubernetes/pki……

阅读全文

使用kubeadm升级Kubernetes集群到1.22版本

查看当前版本 1kubectl get nodes -owide 1NAME STATUS ROLES AGE VERSION 2k8s-master Ready <none> 548d v1.20.8 3k8s-node1 Ready <none> 548d v1.20.8 4k8s-node2 Ready <none> 548d v1.20.8 k8s不支持跨多个版本升级,因此需要先升级到1.21 安装kubeadm-1.21.4 1yum -y install kubeadm-1.21.4 kubectl-1.21.4 kubelet-1.21.4 创建升级计划 1kubeadm upgrade plan 1.21.4 --ignore-preflight-errors=ControlPlaneNodesReady,swap 由于没有label标识master节点,需要加上--ignore-preflight-errors=C……

阅读全文

Kubernetes 高级调度

节点亲和性调度 节点亲和性分类 节点亲和性调度主要分为硬亲和性调度 requiredDuringSchedulingIgnoredDuringExecution 和 软亲和性调度 preferredDuringSchedulingIgnoredDuringExecution 硬亲和性调度: 必须满足指定条件才调度,否则不调度 软亲和性调度: 优先考虑指定节点,实在不满足也行 节点硬亲和性调度 nginx-deploy.yaml 1apiVersion:apps/v12kind:Deployment3metadata:4name:nginx5spec:6replicas:37selector:8matchLabels:9app:nginx10template:11metadata:12labels:13app:nginx14spec:15affinity:16nodeAffinity:17requiredDuringSchedulingIgnoredDuringExecution:18nodeSelectorTerms:19- matchExpressions:20- key:kubernetes.io/hostname21operator:"In"22values:23- "k8s-m2"24containers:25- name:nginx26image:nginx:1.20.1-alpine27resources:28limits:29memory:"256Mi"30cpu:"250m"31ports:32- containerPort:8033name:http34protocol:T……

阅读全文

Kubernetes 调度策略

今天来看一下 Kubernetes 的调度策略 备注 每个版本的默认调度策略可能不太一样,具体可以查看相应版本的代码。 一、调度策略分类 pkg/scheduler/framework/plugins/legacy_registry.go 1 // Used as the default set of predicates if Policy was specified, but predicates was nil. 2 DefaultPredicates: sets.NewString( 3 NoVolumeZoneConflictPred, 4 MaxEBSVolumeCountPred, 5 MaxGCEPDVolumeCountPred, 6 MaxAzureDiskVolumeCountPred, 7 MaxCSIVolumeCountPred, 8 MatchInterPodAffinityPred, 9 NoDiskConflictPred, 10 GeneralPred, 11 PodToleratesNodeTaintsPred, 12 CheckVolumeBindingPred, 13 CheckNodeUnschedulablePred, 14 EvenPodsSpreadPred, 15 ), 16 17 // Used as the default set of predicates if Policy was specified, but priorities was nil. 18 DefaultPriorities: map[string]int64{ 19 SelectorSpreadPriority: 1, 20 InterPodAffinityPriority: 1, 21 LeastRequestedPriority: 1, 22 BalancedResourceAllocation: 1, 23 NodePreferAvoidPodsPriority: 10000, 24 NodeAffinityPriority: 1,……

阅读全文

使用kube-prometheus快速部署监控系统

使用kube-prometheus快速部署监控系统 简介 根据官方的描述kube-prometheus集kubernetes资源清单、Grafana仪表盘、Prometheus规则文件以及文档和脚本于一身,通过使用prometheus operator提供易于操作的端到端Kuberne……

阅读全文

使用velero管理Kubernetes资源

使用velero管理Kubernetes资源 背景 经常在开发测试环境碰到这样一种情况,yaml文件被修改了,或者service被人删除了。这个时候需要第一时间恢复业务,保障其开发测试的可用性,在生产环境中,备份显得尤为重要,任何一个误操作都有可能导致业务受到影响。 一、简介 是 VMWare 开源的……

阅读全文

使用Rook在Kubernetes上部署Ceph集群

一、简介 在本文中,我们将使用Rook在Kubernetes集群中设置Ceph存储。然后使用Ceph的块存储来持久存储MongoDB数据库的数据。 完成后,您将了解什么是Rook以及如何使用它来部署Ceph。您还将了解如何使用Rook在Kubernetes中部署其他一些存储后端。 二、……

阅读全文

使用RKE部署Kubernetes集群

使用RKE部署Kubernetes集群 一、简介 Rancher Kubernetes Engine(RKE)是一个用Golang编写的Kubernetes安装程序,相对于其它的工具来说,更加简单易用和上手。 二、主机规划 主机名称 系统镜像 IP 配置 角色 rancher-master ubuntu18.04 192.168.0.26 4C8G50G controlplane,etcd rancher-node1 ubuntu18.04 192.168.0.27 8C16G50G node rancher-node2 ubuntu18.04 192.168.0.28 8C16G50G node 三、环境准备 2.1 使用国内源 1sed -i 's/nova.clouds.archive.ubuntu.com/mirrors.ustc.edu.cn/' /etc/apt/sources.list 2apt update 2.2 配置……

阅读全文

备份Kubernetes资源清单文件脚本

脚本文件 dump_yaml_by_namespace.sh 1#!/bin/bash 2 3# 作用: 4# 备份指定namespace下的kubernetes资源清单文件 5 6# ===== 变量定义 ===== 7namespace=$1 8manifests=${2:-manifests} 9today=$(date +%Y%m%d) 10 11# ===== 函数定义部分 ===== 12# 红色终端显示 13function red() { 14 local body=$1 15 echo -e "\033[31m${body}\033[0m" 16} 17 18# 绿色终端显示 19function green() { 20 local body=$1 21 echo -e "\033[32m${body}\033[0m" 22} 23 24# 导出yaml格式的文件 25function dump_to_yaml() { 26 local type=$1 27 green "get ${namespace}${type}." 28 for i in $(kubectl get ${type} -n ${namespace} 2>/dev/null | awk '{if(NR!=1) print $1}');……

阅读全文