背景 在 k8s 里部署了应用需要通过 ingress 提供外部调用. ingressController Pod 应用部署在 A 机器上, 应用部署在 B 机器上. 通过自定义域名调用应用,则需要经过自定义域名配置的 host 的 kube-proxy 到 IngressController Pod 机器,再由 Ingress 负载找到应用的 Service 负载的 endpoint. 最终请求到应用的 Pod. 环境 k8s: 1.19 docker: 19.10 linux: CentOS7.6 分析思路 先确定 host:port 端口是否通达? 再确认 ingress 是否可以访问到 service IP ingress 关于作者 我的博客:https://yezihack.github.io 欢迎关注我的微信公众号【空树之空】,一日不学则面目可憎也,吾学也。
1.1. 四大调度方式 1.1.1. 自动调试 1.1.2. 定向调度 1.1.2.1. NodeName 1.1.2.2. NodeSelector 1.1.3. 亲和性调度 1.1.3.1. NodeAffinity 1.1.3.2. PodAffinity 1.1.3.3. PodAntiAffinity 1.1.4. 污点(容忍)调度 1.1.4.1. 污点 1.1.4.2. 容忍 1.2. 参考 关于作者 1.1. 四大调度方式 自动调度:运行在哪个节点上完全由Scheduler经过一系列的算法计算得出 定向调度:NodeName、NodeSelector 亲和性调度:NodeAffinity、PodAffinity、PodAntiAffinity 污点(容忍)调度:Taints、Toleration 1.1.1. 自动调试 完全交由 kube-scheduler 来决定 pod 调度到哪里,不受人为控制。 1.1.2. 定向调度 1.1.2.1. NodeName NodeName用于强制约束将Pod调度到指定的Name的Node节点上。这种方式,其实是直接跳过Scheduler的调度逻辑,直接将Pod调度到指定名称的节点。 使用实例: apiVersion: v1 kind: Pod metadata: name: pod-nodename namespace: dev spec: nodeName: kube-11 # 指定调度到node1节点上 containers: - name: nginx image: nginx:1.17.1 tip: 这种调度不够灵活,必须指定某 node 节点,若 node 异常会导致调度失败。
.1. 为什么升级 漏洞问题 使用新功能 .2. 特殊性 内网环境,没有外网。 多 master 集群。 外置 Etcd。 .3. 版本 kubeadm升级前版本:v1.16.0 kubeadm升级后版本:v1.16.15 .4. 升级前的检查 .4.1. 查看当前版本 kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"72c30166b2105cd7d3350f2c28a219e6abcd79eb", GitTreeState:"clean", BuildDate:"2020-01-18T23:29:13Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"} .4.2. 离线下载 kubectl,kubeadm,kubelet 下载 # 必须本机没有安装以下软件 version="1.16.15" yumdownloader --resolve --destdir=/opt/local-packages/ kubelet-${version} kubeadm-${version} kubectl-${version} .4.3. 制作共享 YUM 源 使用工具:saber 假定本机IP:192.168.10.10 # 安装 Createrepo yum install createrepo -y createrepo /opt/local-packages/ # 如果存在 repodata 则使用更新 createrepo --update /opt/local-packages/ # 共享文件 saber fs /opt/local-packages/ .
.1. 为什么 Kubernetes 众多组件汇集于一身,插件也是多如牛毛,在运维中或日常安装中难免会遇到各种各样的错误,有些错误并不好排查,让人火急火燎搜索一翻,半天已经过去。在此收集日常使用 kubernetes 遇到的问题。 .2. Ingress-nginx .2.1. Internal error occurred: failed calling webhook “validate.nginx.ingress.kubernetes.io” .2.1.1. 详细错误信息 Error from server (InternalError): error when creating "ingress.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1beta1/ingresses?timeout=10s": context deadline exceeded .2.1.2. 解决方法 删除验证 # 查看 kubectl get validatingwebhookconfigurations # 删除 kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission .3. 关于作者 我的博客:https://yezihack.github.io 欢迎关注我的微信公众号【空树之空】,一日不学则面目可憎也,吾学也。
.1. k1s 是 kubectl 辅助工具 .2. 什么是 k1s .3. k1s 特色 .4. 安装 .5. 快速上手 .6. 功能 .6.1. Resources 列表( kubectl 系统对应) .6.2. Resources 列表(扩展功能) .6.3. Action 列表 .6.4. Extend 扩展功能 .6.5. 环境变量 .7. 使用说明 .7.1. 设置环境变量 .7.2. 日志查看 .7.3. 进入容器 .7.4. 资源操作 .7.4.1. nodes 资源 .7.4.2. pods 资源 .7.4.3. deployments 资源 .7.4.4. daemonsets 资源 .7.4.5. services 资源 .7.4.6. 清理垃圾 .8. 关于作者 .1. k1s 是 kubectl 辅助工具 so easy, so fast.
.1. 一点点 喜欢写博客的你,曾几何时开启录屏软件进行你的命令行录制,然后再转成 gif 动画图片。 此刻你看着几兆大小的gif或几十兆大小的gif,是不是有种别无办法的选择了。 现在告诉你有一种不行帧录制,而是文本录制,大小在 10 kb左右。神器就是:https://asciinema.org/ 如同它的名称,ascii + nema,存储文件里是字符,自然轻盈。 .2. 介绍 asciinema 录制成文本文件,需要跳转到官方才能播放。 asciicast2gif 将录制的文本文件转成 gif .3. 安装 asciinema 由 python 编写 CentOS: sudo yum install asciinema Ubuntu: sudo apt-get install asciinema MacOS: brew install asciinema .4. Asciinema 使用 .4.1. 登陆 登陆逻辑: asciinema 的登陆有别于传统的帐号密码,只需要一个邮箱即可实现个人登陆。 使用:asciinema auth 生成一个URL,后面是一串 UUID,做为唯一码。 复制 URL 浏览器上,输入您的邮件地址,系统会发一封认证 URL。 打开邮件点击 URL,采用 Token JWT 实现的。 命令行上传文件时会携带 UUID 到服务器上验证,从而实现登陆功能。 -> # asciinema auth Open the following URL in a browser to register your API token and assign any recorded asciicasts to your profile: https://asciinema.
1. 安装 GPU 驱动 1.1. 查看 GPU 硬件 1.2. 检查自带 GPU 驱动 1.3. .1.3. 官方下载 GPU 驱动 1.4. 卸载驱动 1.5. 安装 GPU 驱动 1.6. 安装失败 1.6.1. ERROR: An NVIDIA kernel module ’nvidia-uvm’ appears to already be loaded in your kernel 1.6.2. ERROR: Unable to find the kernel source tree for the currently running kernel 1.7. 重装内核:方法一 1.8. 重装内核:方法二 1.9. 设置默认内核 1.10. 再次安装 GPU 驱动包 1.10.1. 先卸载之前的驱动 1.10.2. 安装 .run 文件 1.
.1. 回顾 .2. 安装前的准备 .2.1. 安装要求 .2.2. 集群规划 .2.3. 版本选择 .2.4. 基本设置 .3. Kubernetes 设置的参数 .3.1. br_netfilter 模块 .3.2. 桥接的IPv4流量传递到iptables的链 .3.3. 加载 IPVS .4. Docker 部署 .4.1. 设置 Docker 镜像源 .4.2. 列出 Docker 所有的版本 .4.3. 安装 docker .4.4. 设置 daemon.json .4.4.1. 设置CPU .4.4.2. 支持GPU .4.5. 启动 docker .5. 设置 firewall 防火墙规则 .5.1. k8s master需要开启以下端口 .5.2. k8s node需要开启以下端口 .5.3. 打开 NAT 转发功能 .5.4. calico 需要开启以下端口 .5.5. NFS 防火墙规则设置 .5.6. 其它端口 .
.1. 错误提示 突然有一天,当你重启电脑后,系统就弹出以下错误弹窗,提示某某文件找不到。如果你没有解决,每次重启电脑 都会弹出此窗,非常讨厌,今天我们来解决此问题。 提示:Windows 找不到文件: “C:\Program File" 请确定文件名是否正确后,再试一次。 .2. 解决方法 打开你的 cmd,使用 win + R 或者开始-> 运行 -> 输入:cmd 注意:使用 administrator 权限打开 CMD 再输入以下代码即可。 sfc /scannow DISM /Online /Cleanup-Image /CheckHealth # 如果执行失败后,重启后再执行此命令 DISM /Online /Cleanup-Image /ScanHealth # 如果执行失败后,重启后再执行此命令 DISM /Online /Cleanup-Image /RestoreHealth 最后重启电脑,以后就不再弹窗啦。一切都安静了。 .3. 参考 https://learn.microsoft.com/en-us/answers/questions/663590/windows-error.html https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/repair-a-windows-image?source=recommendations&view=windows-11 .4. 关于作者 我的博客:https://yezihack.github.io 欢迎关注我的微信公众号【空树之空】,一日不学则面目可憎也,吾学也。
1. 回顾 之前写过一篇 kuberntes-dashboard 的文章,介绍如何使用 nodeport 方式部署与访问。 参考:第十一章 Kubernetes Dashboard 本次介绍使用 ingress 域名方式访问 dashboard。 采用 tls 方式配置 ingress-nginx 访问 dashboard。 2. 下载对应的版本 访问 github 仓库:https://github.com/kubernetes/dashboard/ 如何安装合适自己 kuberntes 版本的 Dashboard 的呢?官方发布 release 时,每个版本都有测试,当前版本支持哪些范围的 kubernetes 版本。还特意列出不完全兼容的版本信息。 在 https://github.com/kubernetes/dashboard/releases 找到"Compatibility"能找到完合兼容的版本信息,如图: 本次安装使用的 kubernetes 版本为:1.20 找到适合的 dashboard 版本:https://github.com/kubernetes/dashboard/releases/tag/v20 # 下载 YAML wget -O dashboard.yaml https://raw.githubusercontent.com/kubernetes/dashboard/v20/aio/deploy/recommended.yaml # YAML 里含有的镜像: kubernetesui/dashboard:v20 kubernetesui/metrics-scraper:v17 3. 生成自签名的证书 如果是公网证书则跳过 使用自签名证书,去掉 dashboard.yaml 生成证书。 # 创建目录 mkdir certs # 进入目录,准备生成证书 cd certs # req 生成证书签名请求 # -newkey 生成新的私钥文件 # -keyout 生成新的私钥文件 # -out 生成的CS文件 # -days 证书有效期,3650天,即10年 # -subj 生成CSR证书的参数 openssl req -newkey rsa:2048 -nodes -keyout dash.