文章目录

  • 一、k8s集群搭建
    • 1.安装要求
    • 2.关闭防火墙、selinux、swap分区
    • 3.配置hostname、hosts、 iptables
    • 4.配置k8s阿里源
    • 5.部署k8s的master和node节点
    • 6.安装网络插件(CNI)
    • 7.开启ipvs
  • 二、常见问题
    • 1./proc/sys/net/ipv4/ip_forward contents are not set to 1
    • 2.modprobe: FATAL: Module nf_conntrack_ipv4 not found
  • 结尾

一、k8s集群搭建

1.安装要求

  • 3台以上机器,操作系统 CentOS7.7以上64位系统
  • 具备docker环境(docker搭建参考:docker安装部署实战详细手册)
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像
ip hostname
192.168.19.100 master
192.168.19.101 node1
192.168.19.102 node2

2.关闭防火墙、selinux、swap分区

##关闭防火墙
systemctl stop firewalld
systemctl disable firewalld##关闭swap分区
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab ## 把SELinux 设置为 permissive 模式(相当于禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config 

3.配置hostname、hosts、 iptables

##各自修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2##添加主机名与IP对应关系
echo '''
192.168.19.100 master
192.168.19.101 node1
192.168.19.102 node2
''' >> /etc/hosts## 允许 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

4.配置k8s阿里源

#配置k8s的yum源地址
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
EOF#安装 kubelet,kubeadm,kubectl
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9#启动kubelet
sudo systemctl enable --now kubelet

5.部署k8s的master和node节点

初始化master主节点
两个网段不要重,后面是/16,不要与当前机器网段一样

kubeadm init \
--apiserver-advertise-address=192.168.19.100 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

这里执行完会生成一串命令用于node节点的加入,记录下来,接着执行以下命令

mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config

部署node节点
复制上面生成的一串命令,我这里只是示例,命令根据你实际生成的复制去node节点执行

kubeadm join 192.168.19.100:6443 --token  ew01w0.s7951e0gggx5i6s7 --discovery-token-ca-cert-hash sha256:676f6de73444fdddba8510e0f61bba492cb190db86b8e5892d7a1e3c33411e75

如果之前加入过其他master,会报错:/etc/kubernetes/kubelet.conf already exists,执行reset即可

kubeadm reset

6.安装网络插件(CNI)

下面两种插件二选一,master上执行,如果是云服务器建议按照flannel,calico可能会和云网络环境有冲突

安装flannel插件(轻量级用于快速搭建使用,初学推荐)
下载yaml文件(如下载出现问题,可以拷贝下面网址内容,本地创建kube-flannel.yml)

wget https://github.com/xuwei777/xw_yaml/blob/main/kube-flannel.yml

修改net-conf.json下面的网段为上面init pod-network-cidr的网段地址(必须正确否则会导致集群网络问题)

sed -i 's/10.244.0.0/192.168.0.0/' kube-flannel.yml

修改完安装插件,执行

kubectl apply -f kube-flannel.yml
kubectl get pods -n kube-system

安装calico插件(用于复杂网络环境)
下载yaml文件(如下载出现问题,可以拷贝下面网址内容,本地创建calico-3.9.2.yaml)

wget https://github.com/xuwei777/xw_yaml/blob/main/calico-3.9.2.yaml

修改配置文件的网段为上面init pod-network-cidr的网段地址(必须正确否则会导致集群网络问题)

sed -i 's/192.168.0.0/192.168.0.0/g' calico-3.9.2.yaml

修改完安装插件,执行

kubectl apply -f calico-3.9.2.yaml
kubectl get pod --all-namespaces -o wide

7.开启ipvs

所有节点安装

yum -y install ipvsadm
#修改配置
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

主节点编辑 kube-proxy 配置文件,mode 修改成 ipvs

kubectl edit  configmap -n kube-system  kube-proxy


重启 kube-proxy

# 先查看
kubectl get pod -n kube-system | grep kube-proxy
# 再delete让它自拉起
kubectl get pod -n kube-system | grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
# 再查看
kubectl get pod -n kube-system | grep kube-proxy

查看 ipvs 转发规则

ipvsadm -Ln

二、常见问题

1./proc/sys/net/ipv4/ip_forward contents are not set to 1

echo "1" > /proc/sys/net/ipv4/ip_forward

2.modprobe: FATAL: Module nf_conntrack_ipv4 not found

高版本的内核nf_conntrack_ipv4被nf_conntrack替换了,所以装不了。modprobe nf_contrack_ipv4改成 nf_conntrack即可

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- br_netfilter
EOF

结尾

  • 感谢大家的耐心阅读,如有建议请私信或评论留言。
  • 如有收获,劳烦支持,关注、点赞、评论、收藏均可,博主会经常更新,与大家共同进步

kubeadm安装k8s集群详细手册相关推荐

  1. (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本

    基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...

  2. 使用kubeadm安装k8s集群故障处理三则

    最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...

  3. 使用kubeadm安装k8s集群的完整步骤(k8sv15.1)

    一.创建虚拟机 首先使用vmware15 pro创建了4台centos7虚拟机,其中,3台用来组建k8s集群,1台为master节点,2台为node节点, 剩下的一台用来安装harbor配置私有仓库( ...

  4. kubeadm 安装 k8s 集群

    文章目录 环境 三台 CentOS Version Ready 关闭所有防火墙 禁用 Selinux 关闭 swap 加入 host 信息 相关组件安装 Docker 安装 `kubelet`.`ku ...

  5. 【k8s系列】vmware中ubuntu22.04使用kubeadm安装k8s集群(1.24.4 or higher)(cka考试环境搭建)

    文章目录 部署环境准备 环境修改 修改hostname(各修改各的) 修改hosts文件(master 和所有node ) 禁用swap(master 和所有node) 修改内核参数(master 和 ...

  6. kubeadm部署k8s集群最全最详细

    一.安装要求 kubeadm安装kubernetes1.15 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 1.一台或多台机器(≥3奇数个),操作系统 CentOS7.x(最好是 ...

  7. kubeadm部署K8S集群并使用containerd做容器运行时

    kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...

  8. linux下离线安装k8s集群1.19.4附带nfs存储(kubeadm方式)

    linux下离线安装k8s集群1.19.4附带nfs存储 活动地址:毕业季·进击的技术er  一,环境简介 kubernetes-1.19.4集群部署计划 序号 服务器配置 IP地址 操作系统 备注 ...

  9. k8s集群详细安装步骤

    k8s安装步骤 三台机器 192.168.168.151 master 192.168.168.152 node 192.168.168.153 node 安装步骤 准备工作,首先安装docker 安 ...

最新文章

  1. Directx11教程(42) 纹理映射(12)-简单的bump mapping
  2. 一口气说出 4种 “附近的人” 实现方式,面试官笑了
  3. 如何在Web应用程序中使用TWAIN驱动程序的自定义功能?
  4. 结合html和css制作页面的布局结构,CSS Div网页布局中的结构与表现
  5. matlab中求积函数,MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式.doc...
  6. LeetCode LCP 11. 期望个数统计
  7. [转载] plt.hist()和numpy.histogram()的学习
  8. java db4o,有用过db4O的吗?
  9. 教你如何写Bug:Google Guava源码分析之——Joiner
  10. INT_MAX和INT_MIN的含义和用法
  11. css旋转45度_Matplotlib中的文字旋转问题
  12. 腾讯云域名解析:未检测到A记录,请前往您的解析服务商确认解析状态是否正常
  13. 【2021四川省赛】E.Don‘t Really Like How The Story Ends 图论
  14. 小学生学程序---百变服装
  15. 技术笔记:Wordpress建站,解决无法外网访问的方法
  16. App架构师实践指南四之性能优化一
  17. 资深美女基金经理首次分享基金知识,好评如潮!!!
  18. mysql登陆错误2003(hy000)_mysql远程无法登陆出现ERROR2003(HY000)...解决方法_MySQL
  19. 重命名Active Directory域名
  20. 新型勒索软件PYSA浅析

热门文章

  1. 别再说学不会:超棒的Numpy可视化学习教程来了!
  2. linux连接本机mysql数据库,Linux中MySQL连接本机数据库客户端
  3. java 调用.asmx_Java调用asmx的一个例子
  4. 【深圳】游戏公司招PHP开发工程师!!程序员看过来
  5. 机器学习:3个知乎大神回答、5个新人常见问题和3个学习规划
  6. Qt 之 自定义提示信息框—迅雷风格
  7. 翻转卡片动画|CSDN创作打卡
  8. B-样条基函数:计算实例
  9. 自动化测试工具QTP概述、安装及使用
  10. 3,4,5,6-四(9-咔唑基)-邻苯二腈,4CzPN cas:1416881-51-0光伏材料,齐岳定制