准备工作
  • 关闭swap,注释swap分区
swapoff -a
  • 配置内核参数,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

docker

  • 安装docker-ce
yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce
  • 配置docker源码并设置cgroup
mkdir -p /etc/docker
[root@master01 ~]# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zdp3p97t.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF systemctl daemon-reload systemctl restart docker systemctl enable docker

安装k8s

  • 添加阿里kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
  • 安装
yum install kubectl kubelet kubeadm

systemctl enable kubelet

初始化k8s集群

  • --apiserver-advertise-address:这里的ip地址就是要对外提供的ip地址,可以是内网ip也可以是公网ip,我这里用的是公网ip
kubeadm init --kubernetes-version=1.23.4  \
--apiserver-advertise-address=【你的ip】 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
  • kubectl初始化设置,完成这一步之后就可以使用kubectl get pods、nodes了
mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 使kubectl可以自动补充
source <(kubectl completion bash)

这一步之后如果发现节点为NotReady状态,是因为corednspod没有启动,缺少网络pod

  • 安装calico网络,执行完之后node就会变成ready状态
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

到这一步单机版k8s就已经安装完成

k8s添加节点

  • 添加节点的前提是要在被添加的节点服务器上重复上面的操作,安装好k8s的基础套件,安装完成之后如果执行了kubeadm init,那么需要在子节点重置一下
  • kubeadm reset 
  • 查看master节点token
    • 在master节点上面查看master节点的token值,用于在子节点上执行
kubeadm token create --print-join-command 

# 会输出以下内容,以下内容就是master节点的token值
kubeadm join xx.xx.xx.xx:6443 --token i9vhtn.32fq9o8ka9iml1xm --discovery-token-ca-cert-hash sha256:5b0bc6f4915f5a6943b9e5fc12a901e9a2876abb43fb3a8e4c322fa7da4be4fc
  • 在子节点上执行以下命令,就是上一步token输出的内容
kubeadm join xx.xx.xx.xx:6443 --token i9vhtn.32fq9o8ka9iml1xm --discovery-token-ca-cert-hash sha256:5b0bc6f4915f5a6943b9e5fc12a901e9a2876abb43fb3a8e4c322fa7da4be4fc
  • 接下来在master节点所在服务器上执行 kubectl get nodes,就可以看到刚刚添加的节点了

问题点

  • kubectl top nodes会可能出现Metrics API not available,是因为没有安装metrics-server
    • 在集群上安装一下就可以了
  • 由于自己安装的k8s,在主节点上部署pod的时候可能会有污点的问题,可能会造成主节点的pod无法成功部署,具体错误类似于1 node(s) didn't satisfy existing pods anti-affinity rules, 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerat
kubectl taint nodes [node-name] node-role.kubernetes.io/master:NoSchedule-

文章内容来源于互联网,这里自己踩坑做一个汇总归纳,并把自己遇到的问题分享出来供大家参考

参考文章:https://juejin.cn/post/7007734421981757448#diff2

https://www.kubernetes.org.cn/7189.html

centos安装k8s集群的更多相关文章

  1. Centos 安装k8s 集群(单master开发环境)

    本教程是在VM中搭建K8s 所以第一步骤先配置虚拟机的ip 和上网情况详细参考https://www.cnblogs.com/chongyao/p/9209527.html 开始搭建K8s集群 两台机 ...

  2. [k8s]kubespray(ansible)自动化安装k8s集群

    kubespray(ansible)自动化安装k8s集群 https://github.com/kubernetes-incubator/kubespray https://kubernetes.io ...

  3. yum安装k8s集群

    k8s的安装有多种方式,如yum安装,kubeadm安装,二进制安装等.本文是入门系列,只是为了快速了解k8s的原理和工作过程,对k8s有一个快速的了解,这里直接采用yum安装 的1.5.2为案例进行 ...

  4. 冰河教你一次性成功安装K8S集群(基于一主两从模式)

    写在前面 研究K8S有一段时间了,最开始学习K8S时,根据网上的教程安装K8S环境总是报错.所以,我就改变了学习策略,先不搞环境搭建了.先通过官网学习了K8S的整体架构,底层原理,又硬啃了一遍K8S源 ...

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

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

  6. kubernetes教程第一章-kubeadm高可用安装k8s集群

    目录 Kubeadm高可用安装k8s集群 kubeadm高可用安装1.18基本说明 k8s高可用架构解析 kubeadm基本环境配置 kubeadm基本组件安装 kubeadm集群初始化 高可用Mas ...

  7. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

         前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...

  8. k8s学习笔记之二:使用kubeadm安装k8s集群

    一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...

  9. 【K8S】基于单Master节点安装K8S集群

    写在前面 最近在研究K8S,今天就输出部分研究成果吧,后续也会持续更新. 集群规划 IP 主机名 节点 操作系统版本 192.168.175.101 binghe101 Master CentOS 8 ...

随机推荐

  1. 【刷题-LeetCode】304. Range Sum Query 2D - Immutable

    Range Sum Query 2D - Immutable Given a 2D matrix matrix, find the sum of the elements inside the rec ...

  2. 2022GDUT寒假专题学习-1 B,F,I,J题

    专题链接:专题学习1 - Virtual Judge (vjudge.net) B - 全排列 题目 思想 这道题可以用DFS进行求解,但是一看到全排列,其实可以立刻想到一个STL函数:next_pe ...

  3. netty系列之:请netty再爱UDT一次

    目录 简介 netty对UDT的支持 搭建一个支持UDT的netty服务 异常来袭 TypeUDT和KindUDT 构建ChannelFactory SelectorProviderUDT 使用UDT ...

  4. golang中的goroutine

    1. 概念 go中可以并发执行的活动单元称为goroutine当一个go程序启动时,一个执行main function的goroutine会被创建,称为main goroutinego func() ...

  5. windows系统配置Nginx使用SSL证书实现Https反向代理

    Nginx反向代理服务,可以代理接收请求,并把请求转发到设置好的其他服务器上. 例如,Nginx服务器为 100.101.102.103,A服务为 100.101.102.104 ,通过Nginx配置 ...

  6. Windows 10 Version 21h1安装

    好久没安装过Windows 10系统了,这两天在下载电脑管家时,使用bing搜索,没注意就选择了第一个,安装后,噩梦就来了,非法广告.各种软件的推送,怎么也清不干净. 没办法,到PCBeta下载了最新 ...

  7. python24day

    内容回顾 命名空间 组合 一个类的对象是另一个类对象的属性 两个类之间有 什么有什么二点关系:例:班级有学生 学生和课程.圆形和圆环.班级和课程 计算器 from functools import r ...

  8. mycat 简单介绍

    一.mycat? 1.为什么叫mycat 其实mycat在最早的初期版本只支持mysql一种数据库,换句话说mycat其实就是mysql的增强版 在mysql中只是数据库,并没有读写分离和分库分表,这 ...

  9. OPENCV中Line2D对象的意义

    这个对象有四个属性值 VY/VX就是直线的斜率,这俩值代表着直线的归一化向量 X,Y就是直线上的任意一点 直线方程计算如下:

  10. 读 Go 源码,可以试试这个工具

    原文链接: 读 Go 源码,可以试试这个工具 编程发展至今,从面向过程到面向对象,再到现在的面向框架.写代码变成了一件越来越容易的事情. 学习基础语法,看看框架文档,几天时间搞出一个小项目并不是一件很 ...