使用kubeadm快速部署一个K8s集群

目录

1.搭建k8s环境平台规划

2.服务器硬件配置要求

测试环境

3.搭建k8s集群部署方式

[1. 安装要求](#1. 安装要求)

[2. 准备环境](#2. 准备环境)

[3. 所有节点安装Docker/kubeadm/kubelet](#3. 所有节点安装Docker/kubeadm/kubelet)

[4. 部署Kubernetes Master](#4. 部署Kubernetes Master)

[5. 加入Kubernetes Node](#5. 加入Kubernetes Node)

[6. 部署CNI网络插件](#6. 部署CNI网络插件)

[7. 测试kubernetes集群](#7. 测试kubernetes集群)


使用kubeamd方式搭建k8s集群

1,安装三台虚拟机,安装操作系统centos7.x

2,对三个安装之后操作系统进行初始化操作

3,在三个节点上安装docker kubelet kubeadm kubect1

4,在master节点执行kubeadm init命令进行初始化

5,在node节点上执行kubeadm join命令把node节点添加到当前集群

6,配置网络

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具

这个工具能通过两条指令完成一个kubernetes集群的部署:

复制代码
# 创建一个 Master 节点
$ kubeadm init

# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master节点的IP和端口 >

1.搭建k8s环境平台规划

单master集群 缺点:单点故障

多master集群 要考虑负载均衡

2.服务器硬件配置要求

测试环境

master 2核 4G 20G

node 4核 8G 40G

3.搭建k8s集群部署方式

生产部署k8s集群我选择kubeadm

Kubeadm是一个k8s部署工具,提供kubeadm init和kubeadm join用于快速部署K8s

kubeadm是官方社区推出的一个用于快速部署k8s集群的工具,这个工具能通过量调整指令完成一个k8s集群的部署

第一。创建一个master节点 kubeadm init

第二。将node节点加入到当前集群中 kubeadm join 《master节点的ip和端口》
1,安装VM软件

2,通过VM软件来创建一个虚拟机空间

3,通过VM软件在创建好的虚拟机空间上,安装我们的centOS操作系统

4.使用CentOS

**1.**安装要求

在开始之前,部署 Kubernetes 集群机器需要满足以下几个条件:
一台或多台机器,操作系统 CentOS7.x-86_x64
硬件配置: 2GB 或更多 RAM , 2 个 CPU 或更多 CPU ,硬盘 30GB 或更多
可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
禁止 swap 分区

**2.**准备环境

在VM软件上创建三个Centos,可以配置一个再克隆

|---------|-----------------|
| 角色 | IP |
| master1 | 192.168.133.133 |
| node1 | 192.168.133.136 |
| node2 | 192.168.133.137 |
| | |

通过命令ifconfig查看各个节点的IP,注意是ess:在inet后面的是你的IP

注意除了在master添加node节点,其他代码也要在node节点上执行,并且注意ip地址对不对

复制代码
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名
hostnamectl set-hostname <hostname>

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.44.146 k8smaster
192.168.44.145 k8snode1
192.168.44.144 k8snode2
EOF

# 将桥接的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  # 生效

# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

3. 所有节点安装Docker/kubeadm/kubelet

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

3.1 安装Docker

复制代码
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version
Docker version 18.06.1-ce, build e68fc7a

$ cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

3.2 添加阿里云YUM软件源

复制代码
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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

3.3 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

复制代码
$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
$ systemctl enable kubelet

4. 部署Kubernetes Master

在192.168.31.61(Master)执行。

复制代码
$ kubeadm init 
  --apiserver-advertise-address=192.168.44.146 
  --image-repository registry.aliyuncs.com/google_containers 
  --kubernetes-version v1.18.0 
  --service-cidr=10.96.0.0/12 
  --pod-network-cidr=10.244.0.0/16

由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。

使用kubectl工具:

复制代码
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

注意这是在node节点中执行,因为要把node安装到master节点上

5. 加入Kubernetes Node

在192.168.1.12/13(Node)执行。

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

复制代码
$ kubeadm join 192.168.1.11:6443 --token esce21.q6hetwm8si29qxwn \
    --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5

注意改Ip

6. 部署CNI网络插件

默认镜像地址无法访问,sed命令修改为docker hub镜像仓库。

复制代码
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl get pods -n kube-system
NAME                          READY   STATUS    RESTARTS   AGE
kube-flannel-ds-amd64-2pc95   1/1     Running   0          72s

7. 测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

复制代码
$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc

最后外网访问IP为你两个节点中的任意一个IP地址加上你再上一步生成的端口号

相关推荐
VermiliEiz6 小时前
二进制文件部署k8s方式(4)
云原生·容器·kubernetes
牛奔7 小时前
docker compose up 命令,默认配置文件自动查找规则
java·spring cloud·docker·容器·eureka
工具罗某人7 小时前
docker快速部署jenkins
java·docker·jenkins
BigBigHang7 小时前
【docker】离线设备安装镜像
运维·docker·容器
学好statistics和DS7 小时前
Docker文件与本地文件,系统
运维·docker·容器
liuc03177 小时前
docker下安装SearXNG
运维·docker·容器
oMcLin7 小时前
如何在CentOS 8上配置并优化Docker与Kubernetes结合的容器集群,提升微服务部署效率?
docker·kubernetes·centos
可爱又迷人的反派角色“yang”8 小时前
k8s(一)
linux·运维·网络·云原生·容器·kubernetes
可爱又迷人的反派角色“yang”8 小时前
CICD持续集成Ruo-Yi项目
linux·运维·网络·ci/cd·docker·容器
星环处相逢9 小时前
K8s 网络插件选型:Flannel vs Calico 深度对比
网络·容器·kubernetes