kubernetes监控

1.kubernetes调度

  • 调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。
  • kube-scheduler 是 Kubernetes 集群的默认调度器,并且是集群控制面的一部分。
    如果你真的希望或者有这方面的需求,kube-scheduler 在设计上是允许你自己写一个调度组件并替换原有的 kube-scheduler。
  • 在做调度决定时需要考虑的因素包括:单独和整体的资源请求、硬件/软件/策略限制、亲和以及反亲和要求、数据局域性、负载间的干扰等等。
  • 默认策略可以参考:https://kubernetes.io/zh/docs/concepts/scheduling/kube-scheduler
  • 调度框架:https://kubernetes.io/zh/docs/concepts/configuration/scheduling-framework/

  • nodeName 是节点选择约束的最简单方法,但一般不推荐。如果 nodeName 在PodSpec 中指定了,则它优先于其他的节点选择方法。
  • 使用 nodeName 来选择节点的一些限制:
    • 如果指定的节点不存在。
    • 如果指定的节点没有资源来容纳 pod,则pod 调度失败。
    • 云环境中的节点名称并非总是可预测或稳定的。

示例:


3.Dashboard部署

  • Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
  • -网址:https://github.com/kubernetes/dashboard
    具体步骤:
  • 创建dashboard目录
[root@server1 ~]# mkdir dashboard
[root@server1 ~]# cd dashboard/
  • 下载文件:
[root@server1 dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

kubernetes监控_第1张图片

  • 部署文件:
[root@server1 dashboard]# vim recommended.yaml
[root@server1 dashboard]# kubectl apply -f recommended.yaml

kubernetes监控_第2张图片

  • 修改dashboard中svc的类型
    修改为NodePort方式,以便外部访问。
[root@server1 dashboard]# kubectl -n kubernetes-dashboard edit svc    
service/dashboard-metrics-scraper skipped
service/kubernetes-dashboard edited

修改:

kubernetes监控_第3张图片

  • 查看dashboard中svc类型:
    修改成功!
    kubernetes监控_第4张图片
  • 在浏览器上访问dashboard
    注意:NodePort为节点+端口号的方式访问!!!(两个节点都可以)
https://192.168.76.60:30107

kubernetes监控_第5张图片

4.Helm

  • Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的
    yum。

5.kubernetes版本升级

1.23.10 ----> 1.24.4
由于1.24版本不能直接兼容docker引擎,
Docker Engine 没有实现CRI,这是容器运行时在kubernetes中工作所在需要的。
为此,必须安装一个额外的服务cri-dockerd。cri-dockerd是一个基于传统的内置Docker引擎2支持的项目。
它在1.24版本从kubelet中移除。

(1)安装1.24.4版本

  • 安装cri-docker
yum install cri-dockerd-0.2.5-3.el7.x86_64.rpm

在这里插入图片描述

  • 配置cri-docker
vim /usr/lib/systemd/system/cri-docker.service
编辑:
Type=notify
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=reg.westos.org/k8s/pause:3.7

kubernetes监控_第6张图片

  • 重启daemon服务和cri-docker
systemctl daemon-reload
systemctl  enable --now cri-docker
  • 安装kubeadm1.24.4版本
yum install -y kubeadm-1.24.4-0 kubectl-1.24.4-0 kubelet-1.24.4-0
systemctl enable --now kubelet
  • 初始化集群
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=reg.westos.org/k8s --cri-socket=unix:///var/run/cri-dockerd.sock

(2)升级1.23.10版本到1.24.4版本

  • 安装kubeadm1.24.4-0版本
yum install -y kubeadm-1.24.4-0
  • 执行升级
kubeadm upgrade plan
kubeadm upgrade apply v1.24.4
  • 腾空节点
kubectl drain server1 --ignore-daemonsets
  • 升级kubelet
yum install -y kubelet-1.24.4-0 kubectl-1.24.4-0
  • 配置kubelet使用cri-docker
vim /var/lib/kubelet/kubeadm-flags.env
编辑:
KUBELET_KUBEADM_ARGS="--pod-infra-container-image=reg.westos.org/k8s/pause:3.7 --container-runtime=remote --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock"
  • 修改节点套接字
kubectl edit nodes server1
...
kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/cri-dockerd.sock
  • 重启kubelet
systemctl daemon-reload 
systemctl  restart kubelet 
  • 解除节点保护
kubectl uncordon server1

你可能感兴趣的:(kubernetes,kubernetes,docker,云原生)