当前位置: 首页 > news >正文

k8s集群搭建(保姆级教程以及遇到的各种问题解决)

docker安装

1、移除以前docker相关包

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2、配置yum源

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker

sudo yum install -y docker-ce docker-ce-cli containerd.io#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

4、启动

systemctl enable docker --now

5、配置加速

这里额外添加了docker的生产环境核心配置cgroup

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2、kubeadm创建集群

1、安装kubeadm

  • 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令
  • 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存)
  • 2 CPU 核或更多
  • 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
    • 设置防火墙放行规则
  • 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。
    • 设置不同hostname
  • 开启机器上的某些端口。请参见这里 了解更多详细信息。
    • 内网互信
  • 禁用交换分区。为了保证 kubelet 正常工作,你 必须 禁用交换分区。
    • 永久关闭
1、基础环境

所有机器执行以下操作

#各个机器设置自己的域名
hostnamectl set-hostname xxxx# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config#关闭swap
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
2、安装kubelet、kubeadm、kubectl
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOFsudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetessudo systemctl enable --now kubelet

这里执行完之后查看状态发现没有运行也没事,继续往下。

2、使用kubeadm引导集群

1、下载各个机器需要的镜像

所有服务器都执行

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOFchmod +x ./images.sh && ./images.sh
2、主节点初始化
#所有机器添加master域名映射,以下需要修改为自己的,必须执行的,172.31.0.4 改为自己master主机的内网地址
#cluster-endpoint可以修改也可以不改
#所有结点服务器运行
echo "172.31.0.4  cluster-endpoint" >> /etc/hosts
echo "172.31.0.4  k8s-master" >> /etc/hosts
echo "结点ip  k8s-node1" >> /etc/hosts#设置flannel插件安装ip,用来提速
echo "151.101.76.133 raw.githubusercontent.com" >> /etc/hosts#master运行
#主节点初始化
#172.31.0.4改为master主机的内网ip
#cluster-endpoint改为你自己设置的,没改就默认
#其他选项都不需要修改
kubeadm init \
--apiserver-advertise-address=10.0.4.7 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-

相关文章:

  • CSDN 的 GIt 是没东西吗
  • 机器学习笔记
  • <<机器学习实战>>10-11节笔记:生成器与线性回归手动实现
  • C#和Python共享内存技术
  • Webpack 打包后文件过大,如何优化?
  • 无人机在抗洪方面的作用!
  • k8s搭建双主的mysql8集群---无坑
  • 【DRF】 类视图
  • 时序必读论文15|TimeXer:通过外部变量增强Transformer在时间序列预测中的能力
  • 【hot100-java】【单词搜索】
  • Qt界面优化——绘图API
  • 知识图谱入门——1:基本概念、为什么要用?核心步骤、常用工具与技术、应用场景
  • Spring 概述与环境搭建
  • 【AI知识点】度量学习(Metric Learning)
  • CommandLineRunner 和 ApplicationRunner
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [数据结构]链表的实现在PHP中
  • Android框架之Volley
  • CentOS6 编译安装 redis-3.2.3
  • Java方法详解
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • PHP那些事儿
  • SpringCloud集成分布式事务LCN (一)
  • 分类模型——Logistics Regression
  • 工作中总结前端开发流程--vue项目
  • 简析gRPC client 连接管理
  • 聊聊hikari连接池的leakDetectionThreshold
  • 前嗅ForeSpider中数据浏览界面介绍
  • 区块链技术特点之去中心化特性
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • ​用户画像从0到100的构建思路
  • #define
  • (c语言+数据结构链表)项目:贪吃蛇
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (论文阅读40-45)图像描述1
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (转)visual stdio 书签功能介绍
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .“空心村”成因分析及解决对策122344
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net Memory Profiler的使用举例
  • .Net mvc总结
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • ??Nginx实现会话保持_Nginx会话保持与Redis的结合_Nginx实现四层负载均衡
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @Resource和@Autowired的区别
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [2]十道算法题【Java实现】
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [Android]RecyclerView添加HeaderView出现宽度问题