kubeadmin搭建自建k8s集群

一、安装要求

在开始之前,部署Kubernetes集群的虚拟机需要满足以下几个条件:

  1. 操作系统 CentOS7.x-86_x64
  2. 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多【注意master需要两核】
  3. 可以访问外网,需要拉取镜像,如果服务器不能访问外网,需要提前下载镜像包并导入节点服务器中(网上还有其他可用的国内镜像,但是我尝试过容易出现一些问题,所以我就干脆直接按照官网要求下载对应的镜像文件)
  4. 禁止swap分区

二、环境准备

mac 上安装虚拟机软件:VMware Fusion 12

centos7镜像:CentOS-7-x86_64-DVD-2207-02.iso

三台centos7虚拟机(配置静态 IP,防止 IP 的变化

|------------|---------------|
| 节点 | ip地址 |
| master | 192.168.2.128 |
| work node1 | 192.168.2.129 |
| work node2 | 192.168.2.130 |

三、操作步骤

1、依次在每台虚拟机上将下列指令均执行一遍

复制代码
 1 # 关闭防火墙
 2 systemctl stop firewalld
 3 systemctl disable firewalld
 4 
 5 # 关闭selinux
 6 # 永久关闭
 7 sed -i 's/enforcing/disabled/' /etc/selinux/config  
 8 # 临时关闭
 9 setenforce 0  
10 
11 # 关闭swap
12 # 临时
13 swapoff -a 
14 # 永久关闭
15 sed -ri 's/.*swap.*/#&/' /etc/fstab
16 #修改主机名并且做域名解析
17 # 根据规划设置主机名【master节点上操作】
18 hostnamectl set-hostname k8smaster
19 # 根据规划设置主机名【node1节点操作】
20 hostnamectl set-hostname k8snode1
21 # 根据规划设置主机名【node2节点操作】
22 hostnamectl set-hostname k8snode2
23 
24 # 在master添加hosts
25 cat >> /etc/hosts << EOF
26 192.168.2.128 k8smaster
27 192.168.2.129 k8snode1
28 EOF
29 
30 
31 # 将桥接的IPv4流量传递到iptables的链
32 cat > /etc/sysctl.d/k8s.conf << EOF
33 net.bridge.bridge-nf-call-ip6tables = 1
34 net.bridge.bridge-nf-call-iptables = 1
35 EOF
36 # 生效
37 sysctl --system  
38 
39 # 时间同步
40 yum install ntpdate -y
41 ntpdate time.windows.com

2、安装Docker/kubeadm/kubelet/kubectl

所有节点安装Docker/kubeadm/kubelet ,Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker

2.1、安装Docker

1)配置docker 的阿里yum源

复制代码
1 cat >/etc/yum.repos.d/docker.repo<<EOF
2 [docker-ce-edge]
3 name=Docker CE Edge - \$basearch
4 baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
5 enabled=1
6 gpgcheck=1
7 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
8 EOF

2)yum安装docker

复制代码
1 # yum安装
2 yum -y install docker-ce
3 
4 # 查看docker版本
5 docker --version  
6 
7 # 启动docker
8 systemctl enable docker
9 systemctl start docker

3)配置docker的镜像源

复制代码
1 cat >> /etc/docker/daemon.json << EOF
2 {
3   "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
4 }
5 EOF

4)重启docker

复制代码
1 systemctl restart docker

2.2、添加kubernetes软件yum源

复制代码
1 cat > /etc/yum.repos.d/kubernetes.repo << EOF
2 [kubernetes]
3 name=Kubernetes
4 baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
5 enabled=1
6 gpgcheck=0
7 repo_gpgcheck=0
8 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
9 EOF
2.3、安装kubeadm,kubelet和kubectl
复制代码
1 # 安装kubelet、kubeadm、kubectl,同时指定版本
2 yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
3 # 设置开机启动
4 systemctl enable kubelet

3、部署master节点

1)在master 节点上执行kubeadm init

复制代码
1 # 参数解释:
2 # --image-repository 指定拉取kubernetes所需组件的镜像仓库
3 # --pod-network-cidr 设置pod的地址段
4 kubeadm init --apiserver-advertise-address=192.168.2.128 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=1.18.0  --pod-network-cidr=10.244.0.0/16

注意参数 --pod-network-cidr这个参数值的设置可以是192.168.0.0,或者是10.244.0.0,这个值会在后面的配置网络插件kube-flannel.yml中需要与之对应,很重要,否则会导致flannel pod启动失败,可能出现如下图错误

2)出现如下提示即代码 kubeadm init 执行成功

3)按照提示执行如下指令

复制代码
1 mkdir -p $HOME/.kube
2 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3 sudo chown $(id -u):$(id -g) $HOME/.kube/config

4)查看master节点状态,为NotReady

复制代码
kubectl get nodes

4、部署Slave节点(以node1节点为例)

1)在node1节点下输入kubeadm init 执行成功后输出的指令kubeadm join xxxxx

复制代码
1 kubeadm join 192.168.2.128:6443 --token 2p3p1k.iqoylq7ysjzph6ch \                                                                                                               
2     --discovery-token-ca-cert-hash sha256:ff50efea2f2a2679e7xxxxxxxxxxxxxxx7770931434ed5b2f9f1ea1

2)上述token具有有效期,到期后需要使用如下指令重新生成token

复制代码
kubeadm token create --print-join-command

5、部署CNI网络插件Flannel

1)kube-flannel.yml文件下载

每个节点上都需要下载如下镜像到本地仓库!!

2)kube-flannel.yml文件中所用到的docker镜像均需要下载后导入到本地镜像仓库中(每一个节点都需要执行操作!! )

3)执行如下命令生成flannel pod,联通节点之间的网络

复制代码
1 [root@k8smaster ~]# kubectl create -f kube-flannel.yml 
2 namespace/kube-flannel created
3 clusterrole.rbac.authorization.k8s.io/flannel created
4 clusterrolebinding.rbac.authorization.k8s.io/flannel created
5 serviceaccount/flannel created
6 configmap/kube-flannel-cfg created
7 daemonset.apps/kube-flannel-ds created

4)执行上述命令后查看pods,nodes的状态(至此,集群搭建完成!)

复制代码
kubectl get nodes
kubectl get pods
相关推荐
小夏卷编程9 小时前
Ubuntu 20.04.4 宝塔 docker showdoc v3.2 更新到v3.7.3
运维·docker·容器
JEECG低代码平台9 小时前
JeecgBoot低代码平台 Docker 部署 OnlyOffice 文档服务完整指南
低代码·docker·容器
生活爱好者!10 小时前
NAS帮我找回童年的快乐!部署 小游戏
运维·服务器·docker·容器·娱乐
小小unicorn11 小时前
[微服务即时通讯系统]消息转发子服务的实现与测试
微服务·云原生·架构
心易行者13 小时前
别再说“在我的机器上能跑”了!Docker 入门指南,专治各种环境不服
运维·人工智能·docker·容器
进击切图仔15 小时前
ROS 跨机通信与 Docker 多机环境搭建
运维·docker·容器
cyber_两只龙宝15 小时前
【MySQL】MySQL主从复制架构
linux·运维·数据库·mysql·云原生·架构
切糕师学AI15 小时前
Kubernetes 中的 Informer 机制
云原生·容器·kubernetes·informer
切糕师学AI16 小时前
Kubernetes Operator 详解
运维·分布式·云原生·容器·kubernetes·自动化·运维自动化
AnalogElectronic16 小时前
云原生学习day1ubuntu安装docker,基础镜像打包
学习·docker·云原生