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

Kubeadm安装K8s集群

一、硬件环境

  • 准备3台Linux服务器,此处用Vmware虚拟机。
主机名CPU内存
k8smaster2核4G
k8snode12核4G
k8snode22核4G

二、系统前置准备

  • 配置三台主机的hosts文件
cat << EOF > /etc/hosts
192.168.240.130 k8smaster
192.168.240.132 k8snode1
192.168.240.133 k8snode2
EOF
  • 设置主机名
hostnamectl set-hostname k8smaster
hostnamectl set-hostname k8snode1
hostnamectl set-hostname k8snode2
  • 关闭selinux、禁用swap分区
sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
  • ipv4流量转发
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF#让配置文件生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
  • 关闭防火墙
systemctl disable firewalld && systemctl stop firewalld
  • 同步三台服务器的时间
yum install ntpdate -y
ntpdate time.windows.com

三、环境安装

Docker 安装
  • Docker卸载
systemctl stop docker 
yum remove -y docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
  • Docker 安装
yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io
systemctl enable docker && systemctl start docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
k8s安装
  1. 配置k8s安装镜像
cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/
  1. 安装kubeadm 、kubectl、kubelet
yum remove -y kubelet kubeadm kubectl && yum install -y kubelet-1.16.2 kubectl-1.16.2 kubeadm-1.16.2 --disableexcludes=kubernetes
  1. 设置kubelet开机自启动
systemctl enable kubelet
master节点配置
  1. 创建一个k8s的工作目录,生成一个kubeadm配置文件
mkdir k8s-install && cd k8s-install
kubeadm config print init-defaults > kubeadm.yaml 
  1. 修改配置文件
#修改生成好的配置文件镜像与版本
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.169.240.130bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: k8smastertaints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #修改镜像源
kind: ClusterConfiguration
kubernetesVersion: v1.16.2 #修改版本
networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16 #pod网络serviceSubnet: 10.96.0.0/12
scheduler: {}
  1. 下载kubeadm所需要的镜像
kubeadm config images pull --config kubeadm.yaml

在这里插入图片描述

使用docker images 可查看下载的镜像信息
在这里插入图片描述

  1. 使用kubeadm 初始化master节点
kubeadm init --config kubeadm.yaml

提示以下信息则表示初始化成功

在这里插入图片描述

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.240.130:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1877573f37b7fd0bc9d8e38cf8d68f17f51e64a55606f7b657f3cdba79469f16 
  1. 按照提示创建目录
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看集群节点状态

kubectl get nodes 

此时只有master节点是NotReady状态

  1. 将两台node节点 加入到master节点中去(kubeadm join 是在master节点上初始化配置时生成的)
kubeadm join 192.168.240.130:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1877573f37b7fd0bc9d8e38cf8d68f17f51e64a55606f7b657f3cdba79469f16 

再次查看master节点信息

在这里插入图片描述

  1. 安装flannel网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

编辑kube-flannel.yml

改成虚拟机的网卡名称

在这里插入图片描述

  1. 下载flannel镜像
docker pull quay.io/coreos/flannel:v0.11.0-amd64
kubectl create -f kube-flannel.yml
  1. 查看集群节点状态
kubectl get pods -A

在这里插入图片描述

  • master节点的组件
  1. api-server: api-server是主节点对外开发api的组件,同时提供restful方式,也可以用kubectl方式。
  2. etcd: 数据存储组件,api-server会将收到的指令存储到etcd中。
  3. sched :负责接收指令,然后选举合适的node节点,通知节点进行容器的启停、负载均衡等。
  4. cm :主节点控制中心,controller-manager。
  • node节点的组件
  1. kubelet : 用于管理节点中的容器启停,挂载等等。
  2. kube-proxy : 用于节点间的网络通信、流量转发等。
  3. pod : pod是k8s中的最小调度单位,一个pod中可以包含至少1个容器。多个容器组成了一个pod。
http://www.lryc.cn/news/122901.html

相关文章:

  • 【C++】开源:spdlog跨平台日志库配置使用
  • [Azkaban] No active executors found
  • 无涯教程-Perl - recv函数
  • 算法练习-搜索 相关
  • PyQt5控件布局管理
  • TypeScript 一分钟让你理解泛型是什么
  • PatchMatchNet 训练dtu数据集、训练曲线查看、实操教程图图文详解、
  • 怎样制定测试计划和设计测试用例?
  • 教你如何为博客网站申请阿里云的免费域名HTTPS证书
  • 在线Word怎么转换成PDF?Word无法转换成PDF文档原因分析
  • 计算机网络:网络通信相关概念入门
  • Spring-2-透彻理解Spring 注解方式创建Bean--IOC
  • LeetCode150道面试经典题--单词规律(简单)
  • uniapp把城市换成26个字母和城市排序
  • Flv格式视频怎么转MP4?视频格式转换方法分享
  • Java类与对象详解(3)
  • PMP备考指南来啦!
  • 计算机视觉中的特征检测和描述
  • 【docker】 运行bytetrack 构建映像失败 使用docker删除之前构建的映像
  • 视图矩阵推导
  • Linux | 隐藏终端并在指定路径下执行命令
  • JavaSE_2.1——数组之Arrays工具类
  • yolov5、YOLOv7、YOLOv8改进:注意力机制CA
  • ​LeetCode解法汇总617. 合并二叉树
  • 记vite打包vue项目内存溢出问题解决
  • 【SCI征稿】2区SCI,大数据与遥感技术、图像处理技术、物联网(IoT)技术、传感器网络的结合研究
  • java_基础语法及用法
  • C# WPF 开源主题 HandyControl 的使用(一)
  • 探索ES高可用:滴滴自研跨数据中心复制技术详解
  • 指针---进阶篇(二)