惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
S
Secure Thoughts
S
Security @ Cisco Blogs
S
Security Affairs
Forbes - Security
Forbes - Security
W
WeLiveSecurity
H
Hacker News: Front Page
T
Threatpost
Google Online Security Blog
Google Online Security Blog
S
Schneier on Security
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - Franky
腾讯CDC
IT之家
IT之家
博客园 - 聂微东
L
LINUX DO - 最新话题
罗磊的独立博客
Hacker News - Newest:
Hacker News - Newest: "LLM"
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cisco Talos Blog
Cisco Talos Blog
S
SegmentFault 最新的问题
酷 壳 – CoolShell
酷 壳 – CoolShell
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
美团技术团队
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
AI
AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Jina AI
Jina AI
Help Net Security
Help Net Security
N
News | PayPal Newsroom
月光博客
月光博客
Spread Privacy
Spread Privacy
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
N
News and Events Feed by Topic

博客 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 k8s RKE2 vSphere 存储配置 OpenClaw 全能指南:从安装到进阶自动化实战 (2026 最终版) Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 k8s master 节点 Unauthorized Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 使用TLSv1.3 升级nginx和openssl Proxmox VE(PVE) 更新到最新版本 kindle 邮件发送失败,错误代码E999 metallb + ingress-nginx + argocd 本地部署 iStoreOS(旁路由)使用openclash实现dns劫持 异常流量分析:图片库服务黑客入侵 openwrt 硬盘扩容 搭建ip地址检索服务 SELinux 问题:导致端口无法创建,无法访问 【福利】免费!本地部署!去除视频中移动的物体 通知:《打工人日报》迁移到独立板块 KyBook 3 | calibre-web - IOS系统最佳图书伴侣 Tmux 安装和使用教程 DockerHub 加速镜像部署 - 使用cloudflare 代理 docker的零停机部署 SD-webui 批量处理图片 ubuntu 安装 ComfyUI ubuntu 安装 stable-diffusion-webui 测试策略:微服务架构 单元测试:测试单元质量提升 端到端测试:模拟用户体验 Kubernetes — containerd 安装和部署 CI/CD 可观察性-基于grafana Argo cd 安装和部署 linux服务器进程打开文件过多导致服务异常 使用 ElasticSearch Curator 7天定期删除日志 sonarqube docker安装和配置 SSH 通过 443 端口连接 GitHub iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮 GNU/Linux 一键更换系统软件源脚本 解决Elasticsearch索引只读(read-only) 【福利】埃隆·马斯克传 [沃尔特·艾萨克森] 在线下载 【破解】小鹏P5和小鹏G9开启adb和网络adb Kubernetes — kubecost 分析 Kubernetes 成本 3D Gaussian Splatting:3D模型渲染 Linux 系统收包流程以及内核参数优化 2023亚运会电竞门票民购买指南(报名+抽签) Vue3 + vite + nginx项目部署后404问题 大麦抢票辅助软件(福利 TFBOYS十年之约演唱会 2023 全机位 视频) 黑群晖最新安装教程 Ansible部署ceph集群 最好的微信朋友圈集赞神器-福利推荐 推荐一下 容器云资源 2010年的天涯神贴聊房价 如何礼貌回绝不合理的需求 nginx 配置和编译 github 国内代理访问下载 使用scrapy-redis实现增量爬取 逆境和成长-2022年终总结 优雅的使用Conda管理python环境 Jenkins 编译Android apk 流水线 Kubernetes — 更新证书 shell功能脚本集合 Nexus3 使用和部署 githubAction set-output弃用错误 Kubernetes — Rook云存储介绍和部署 Kubernetes — 基于K8S搭建Ceph分布式存储 Kubernetes — 探针和生命周期 Kubernetes — 开放标准(OCI、CRI、CNI、CSI、SMI、CPI)概述 kubernetes 部署插件 (Flannel、Web UI、CoreDNS、Ingress Controller) Cloudflare Zero Trust 内网穿透 k8s CNI 问题 连接认证失效 k8s.gcr.io国内无法连接解决方法 headscale 部署使用 羊了个羊小程序 破解通关 K8S 问题排查:cgroup 内存泄露问题 RocketMQ k8s部署 4主4从集群 docker 问题处理 kubernetes 存储 linux服务器 删除空间却未释放 kubernetes 从1.23.x 升级到 1.24.x 编写 kubernetes 资源描述文件 nginx ssh-key connection exception kubernetes manual expansion VSCode插件推荐=> Code Runner ant build.xml 编写 kubernetes 调度过程 记录一次上门打散工 k8s本地联调神器kt-connect Ant中如何添加第三方jar包依赖 OpenELB:让k8s私有环境对外暴露端口 linux 网络测速 安装 docker 出现 ERROR: Unsupported distribution 'ol' 问题 logrotate 日志滚动的使用 nginx 编译参数详解 nginx 重写规则 rewrite模块 nginx.conf 配置文件详解 rsync 文件同步 nginx 日志格式整理 163企业邮箱设置教程 2021年第50周记
Kubernetes — k8s 手动安装 1.17.9
2024-08-08 · via 博客 on 打工人日志

背景

已经2024年了, k8s已经更新到 1.30.x的版本了,但是还有很多公司还在使用1.17.9版本,那么我们今天就来手动安装一下1.17.9版本的k8s。

安装

我们在测试centos服务器192.168.40.1安装单节点 Kubernetes 集群(Master 节点)使用 kubeadm 是一个相对直接的过程。

前提条件

  • 确保主机满足以下要求:
    • 操作系统:CentOS 7.x 或更高版本
    • 内存:至少 2 GB 内存
    • 磁盘空间:至少 20 GB 磁盘空间
    • 网络:至少 2 个网络接口

配置主机名和 IP

1sudo hostnamectl set-hostname k8s
2echo "192.168.40.1 k8s" | sudo tee -a /etc/hosts

更新系统

  1. 切换镜像源,选择你喜欢的镜像源,我这里选择腾讯云
1bash <(curl -sSL https://linuxmirrors.cn/main.sh)
  1. 更新系统

禁用 SELinux

1sudo setenforce 0
2sudo sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

禁用 Swap

1sudo swapoff -a
2sudo sed -i '/swap/d' /etc/fstab

修改 /etc/sysctl.conf

 1# 如果有配置,则修改
 2sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
 3sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
 4sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf
 5sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g"  /etc/sysctl.conf
 6sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g"  /etc/sysctl.conf
 7sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g"  /etc/sysctl.conf
 8sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g"  /etc/sysctl.conf
 9# 可能没有,追加
10echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
11echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
12echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
13echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
14echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
15echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
16echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf
17# 执行命令以应用
18sysctl -p

安装docker

因为k8s 1.17.9 不适用于高版本docker,所以我们要下载指定版本的docker

 1sudo yum remove docker*
 2sudo yum install -y yum-utils
 3#配置docker yum 源
 4sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 5#安装docker 19.03.9
 6yum install -y docker-ce-3:19.03.9-3.el7.x86_64  docker-ce-cli-3:19.03.9-3.el7.x86_64 containerd.io
 7
 8#启动服务
 9systemctl start docker
10systemctl enable docker
11
12sudo systemctl daemon-reload
13sudo systemctl restart docker

拉取镜像

由于国内访问 k8s.gcr.io 仓库速度较慢或被阻止,您可以使用国内的镜像源来替代这些镜像地址。以下是一个解决方案,使用阿里云的镜像源来替代默认的 k8s.gcr.io 镜像源。

 1# 拉取阿里云的镜像
 2sudo docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.9
 3sudo docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.9
 4sudo docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.9
 5sudo docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.17.9
 6sudo docker pull registry.aliyuncs.com/google_containers/pause:3.1
 7sudo docker pull registry.aliyuncs.com/google_containers/etcd:3.4.3-0
 8sudo docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5
 9
10# 重新标记镜像
11sudo docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.9 k8s.gcr.io/kube-apiserver:v1.17.9
12sudo docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.9 k8s.gcr.io/kube-controller-manager:v1.17.9
13sudo docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.9 k8s.gcr.io/kube-scheduler:v1.17.9
14sudo docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.17.9 k8s.gcr.io/kube-proxy:v1.17.9
15sudo docker tag registry.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
16sudo docker tag registry.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
17sudo docker tag registry.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5

安装 kubeadm、kubelet 和 kubectl

  1. 配置阿里云的 Kubernetes 仓库:
1cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
2[kubernetes]
3name=Kubernetes
4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
5enabled=1
6gpgcheck=1
7repo_gpgcheck=1
8gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
9EOF
  1. 安装特定版本的 kubeadm、kubelet 和 kubectl:
1sudo yum install -y kubelet-1.17.9 kubeadm-1.17.9 kubectl-1.17.9 --disableexcludes=kubernetes
2sudo systemctl enable --now kubelet

注意: 接下来的步骤有所不同,如果你是初始化集群,继续跟着文档操作,如果你在已有集群的情况下,请跳到加入集群

初始化集群

  1. 初始化集群:
1sudo kubeadm init --kubernetes-version=v1.17.9 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.40.1
  1. 配置 kubectl:
1mkdir -p $HOME/.kube
2sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装 Pod 网络插件(Flannel)

这里由于版本关系,不能下载最新的flannel,所以我们下载低版本的flannel

1# 拉取 Flannel 镜像
2sudo docker pull quay.io/coreos/flannel:v0.12.0-amd64
3
4# 重新标记 Flannel 镜像
5sudo docker tag quay.io/coreos/flannel:v0.12.0-amd64 quay.io/coreos/flannel:v0.12.0-amd64

创建 Flannel 配置文件

1wget https://raw.githubusercontent.com/coreos/flannel/v0.12.0/Documentation/kube-flannel.yml
2kubectl apply -f kube-flannel.yml

加入集群

在主节点上执行kubeadm token create --print-join-command 命令,获取加入集群的命令,然后在其他节点上执行该命令,即可加入集群。

1kubeadm token create --print-join-command

在你需要加入集群的节点上执行该命令,即可加入集群。

配置网络组件

创建 /etc/cni/net.d 目录

下载 flannel 配置文件

1cd /tmp
2curl -L -o flannel.tgz   https://github.jobcher.com/gh/https://github.com/flannel-io/cni-plugin/releases/download/v1.1.2/cni-plugin-flannel-windows-amd64-v1.1.2.tgz
3tar -xzvf flannel.tgz -C /opt/cni/bin
4sudo ln -s /opt/cni/bin/flannel-amd64 /opt/cni/bin/flannel
5ls -l /opt/cni/bin/flannel

重启 kubelet 服务

1sudo systemctl daemon-reload
2sudo systemctl restart kubelet

验证安装

查看节点状态:

查看所有 Pod 状态:

其他问题

节点状态为 NotReady

执行systemctl status kubelet 查看 kubelet 服务状态
发现[failed to find plugin "flannel" in path [/opt/cni/bin]]

 1● kubelet.service - kubelet: The Kubernetes Node Agent
 2   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
 3  Drop-In: /usr/lib/systemd/system/kubelet.service.d
 4           └─10-kubeadm.conf
 5   Active: active (running) since Fri 2025-08-29 10:26:22 CST; 12min ago
 6     Docs: https://kubernetes.io/docs/
 7 Main PID: 31569 (kubelet)
 8    Tasks: 20
 9   Memory: 38.6M
10   CGroup: /system.slice/kubelet.service
11           └─31569 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=cgroupfs --network-plugin=cni --pod-in...
12
13Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: "type": "portmap",
14Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: "capabilities": {
15Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: "portMappings": true
16Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: }
17Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: }
18Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: ]
19Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: }
20Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: : [failed to find plugin "flannel" in path [/opt/cni/bin]]
21Aug 29 10:38:24 dev-nbsj-node2-174 kubelet[31569]: W0829 10:38:24.012395   31569 cni.go:237] Unable to update cni config: no valid networks found in /etc/cni/net.d
22Aug 29 10:38:25 dev-nbsj-node2-174 kubelet[31569]: E0829 10:38:25.817847   31569 kubelet.go:2184] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is...ig uninitialized

解决方法

在新节点安装 CNI 插件时,要确保包含 flannel:

1cd /tmp
2curl -L https://github.jobcher.com/gh/https://github.com/flannel-io/cni-plugin/releases/download/v1.1.0/flannel-amd64 -o /opt/cni/bin/flannel
3chmod +x /opt/cni/bin/flannel

确认文件存在

重启 kubelet 服务

1systemctl restart kubelet