快速部署k8s集群
XYZO
共 5381字,需浏览 11分钟
· 2023-06-20
本文使用kubeadm方式来快速部署k8s集群,操作系统基于ubuntu操作系统
基础配置
IP网段规划
192.168.50.31 master节点
192.168.50.32 node01节点
192.168.50.33 node02节点
操作系统版本
- Ubuntu 22.04 LTS amd64版本
环境准备
增加hosts解析记录
分别3台机器配置hosts解析记录
在所有机器的/etc/hosts文件中增加解析
192.168.50.31 master01.k8s.com 192.168.50.31 node01.k8s.com 192.168.50.32 node02.k8s.com
配置主机名
- master01机器配置(192.168.50.31)
1 ~$ hostnamectl set-hostname master01.k8s.com
- node01机器配置(192.168.50.31)
1 ~$ hostnamectl set-hostname node01.k8s.com
- node02机器配置(192.168.50.32)
1 ~$ hostnamectl set-hostname node02.k8s.com
禁止所有机器的防火墙
~$ systemctl disable --now ufw.service
所有机器启用IPV4内核转发模块
~$ modprobe br_netfilter
所有机器配置ulimit参数
~$ ulimit -SHn 65535
永久配置
~$ cat /etc/security/limits.conf soft nofile 65535 hard nofile 65535 soft nproc 65535 hard nproc 65535
所有机器内核参数配置
~$ cat /etc/sysctl.d/k8s.conf net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 fs.may_detach_mounts = 1 vm.overcommit_memory=1 vm.panic_on_oom=0 fs.inotify.max_user_watches=89100 fs.file-max=52706963 fs.nr_open=52706963 net.netfilter.nf_conntrack_max=2310720 net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl = 15 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_orphans = 327680 net.ipv4.tcp_orphan_retries = 3 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.ip_conntrack_max=655535 net.ipv4.tcp_timestamps = 0 net.core.somaxconn = 16384 ~$ sysctl --system
所有机器IPVS模块安装
~$ modprobe -- ip_vs ~$ modprobe -- ip_vs_rr ~$ modprobe -- ip_vs_wrr ~$ modprobe -- ip_vs_sh ~$ modprobe -- nf_conntrack ~$ cat /etc/modules-load.d/ipvs.conf ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp ip_vs_sh nf_conntrack ip_tables ip_set xt_set ipt_set ipt_rpfilter ipt_REJECT ipip
所有机器检查模块是否加载
~$ lsmod |grep -e ip_vs -e nf_conntrack ~$ apt install ipset # 安装ipset, ipvsadm 管理工具
所有机器同步服务器时间
~$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 配置时区 ~$ ntpdate time.windows.com
所有机器关闭swap
~$ swapoff -a ~$ cat /etc/fstab # 注释swap分区 #/swap.img none swap sw 0 0
容器运行时安装
所有机器依赖包安装
~$ apt-get install -y libseccomp2
所有机器containerd下载部署
~$ wget https://github.com/containerd/containerd/releases/download/v1.6.18/cri-containerd-cni-1.6.18-linux-amd64.tar.gz ~$ tar -tf cri-containerd-cni-1.6.18-linux-amd64.tar.gz # 查看压缩包包含哪些文件 ~$ tar zxf cri-containerd-cni-1.6.18-linux-amd64.tar.gz -C / # 解压包到跟路径 ~$ export PATH=$PATH:/opt/cin/bin # 增加环境变量
所有机器配置文件生成
~$ mkdir -p /etc/containerd ~$ containerd config default > /etc/containerd/config.toml
所有机器修改配置文件
配置文件路径/etc/containerd/config.toml
root = "/var/lib/containerd" # 保存持久化数据目录 .... sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6" .... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] .... SystemdCgroup = true .... [plugins."io.containerd.grpc.v1.cri".registry] # 镜像加速配置 .... [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://bqr1dr1n.mirror.aliyuncs.com"] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"] endpoint = ["https://registry.aliyuncs.com/k8sxio"]
所有机器启动containerd服务
~$ systemctl enable --now containerd
开始集群安装
所有机器kubeadm安装
apt-get update && apt-get install -y apt-transport-https curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat </etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet=1.23.13-00 kubeadm=1.23.13-00 kubectl=1.23.13-00 sudo apt-mark hold kubelet=1.23.13-00 kubeadm=1.23.13-00 kubectl=1.23.13-00 # 锁定版本
所有机启动kubelet服务
~$ systemctl enable --now kubelet
master节点初始化集群配置文件
~$ kubeadm config print init-defaults --component-configs KubeletConfiguration >/root/kubeadm.yaml
master节点修改配置文件
配置文件路径 /root/kubeadm.yaml
..... kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.50.31 # 替换成master地址 bindPort: 6443 nodeRegistration: criSocket: /run/containerd/containerd.sock # 修改为containerd的sock文件 imagePullPolicy: IfNotPresent name: master01.k8s.com # 注册的master名称 taints: # 污点防止调度到master节点 - effect: "NoSchedule" key: "node-role.kubernetes.io/master" --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 # 增加kube-proxy模式配置 kind: KubeProxyConfiguration mode: ipvs # kube-proxy 模式 .... imageRepository: registry.aliyuncs.com/k8sxio # 修改镜像获取地址为国内地址 kind: ClusterConfiguration kubernetesVersion: 1.23.13 # 获取k8s版本 networking: dnsDomain: cluster.local serviceSubnet: 10.96.0.0/12 podSubnet: 10.244.0.0/16 # 指定pod子网 ....
初始化master节点
# 获取镜像 ~$ kubeadm config images pull --config /root/kubeadm.yaml # 手动拉取coredns镜像,阿里云没有这个镜像 ~$ ctr -n k8s.io image pull docker.io/coredns/coredns:1.8.6 ~$ ctr -n k8s.io image tag docker.io/coredns/coredns:1.8.6 registry.aliyuncs.com/k8sxio/coredns:v1.8.6 # 初始化master节点, 根据提示可加入node节点 ~$ kubeadm init -v 5 --config /root/kubeadm.yaml
初始化master节点后,根据kubeadm join提示来完成node节点的加入 如果忘记join节点token可以通过命令重新获取新的tokenkubeadm token create --print-join-command
网络插件安装
calico文件下载github地址
~$ kubectl apply -f calico.yaml # 移除containerd的网络配置,放置影响pod分配的IP地址 ~$ mv /etc/cni/net.d/10-containerd-net.conflist /etc/cni/net.d/10-containerd-net.conflist.old
清理集群
执行kubeadm rest
以后需要在对应的节点执行清理,次命令可以在所有节点执行
~$ kubeadm rest ~$ ifconfig cni0 down && ip link delete cni0 ~$ rm -rf /var/lib/cni/
评论
测试新人,如何快速上手一个陌生的系统!
大家好,我是狂师!作为刚入行不久的测试新人,面对一个陌生的系统时,可能会感到有些手足无措。面对一个全新的系统系统,如何快速上手并展开有效的测试工作是一个重要的挑战。本文将探讨测试新人如何通过一系列步骤和策略,快速熟悉并掌握新系统的测试要点,从而提高测试效率和质量。本文旨在为测试新手提供一份指导,帮助
测试开发技术
0
人人都能在本地电脑上部署LLama3大模型
电脑配置要求:推荐16GB内存以上,最低8GB。最近几年主流CPU均可。英伟达显卡性能表现会更好,但不是必须。部署流程:1、下载安装Ollama大模型运行框架2、下载运行LLama3大模型3、下载安装服务器容器Docker Desktop4、下载运行OpenWebUI应用服务搞定!视频演示
Python涨薪研究所
0
大视频周报|全国酒店电视操作复杂专项治理动员部署电视电话会在京召开
小美播报本 期 看 点广电总局发4K超高清机顶盒技术新标准;总局公示《智能电视操作系统 第8部分:分类分级》等两项行业标准;工信部组织开展今年5G轻量化(RedCap)贯通行动;全国酒店电视操作复杂专项治理动员部署电视电话会在京召开......(今日流媒体vip可免费获取报告PDF版,详情请见文末。
流媒体网
0
Spring Boot + flowable 快速实现工作流
关注我们,设为星标,每天7:40不见不散,架构路上与您共享回复架构师获取资源大家好,我是你们的朋友架构君,一个会写代码吟诗的架构师。来源:blog.csdn.net/zhan107876/article/details/120815560总览一、flowable-ui部署运行二、绘制流程图绘图细节:
Java架构师社区
0
推理部署工程师面试题库
作者丨进击的Killua来源丨https://zhuanlan.zhihu.com/p/673046520编辑丨GiantPandaCV最近团队在招人,记录一些常用的面试问题,持续更新中。1. 描述一下SM的结构?(INT32/FP32/FP64)CUDA core,Tensor Core,LD/S
GiantPandaCV
32
2025年有望破万亿,AIoT助力下,物流行业正在迎来快速发展
作者:王飞鹏物联网智库 原创3月底,正在赶赴港股上市的菜鸟网络被阿里总部召回,上市进程按下了暂停键。在阿里去年定下“大拆分”战略后,菜鸟本是最有希望率先独立IPO的企业,但是在临门一脚之际,阿里却做出了不上市的决策。这一举动引发了外界热议。分析人士普遍认为,阿里之所以做出这一决策,很重要的一个原因是
物联网智库
0
手动部署jar包,太low!动态上传热部署真爽!
本文来源:https://blog.csdn.net/zhangzhiqiang_0912近期开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传到系统中。系统完成热部署,并切换该接口的实现。定义简单的接口这里以一个简单的计算器功能为例,接口定义
Java高效学习
10
中国产业发展促进会产业创新集群与亿欧签约,联合多方共建产业数据全景平台
中国产业发展促进会产业创新集群与亿欧举行签约仪式,双方共同合作,并联合科技型企业光辉城市、新看点,打造中国产业发展全景平台,推动中国全产业数据的智慧化、全球化发展。冲击万店,汉堡界能跑出下一个蜜雪冰城吗?文 | 亿欧4月17日,中国产业发展促进会产业创新集群(下称“产业创新集群”)与北京亿欧网盟科技
亿欧网
0