基于kubeadm方式快速搭建K8s集群

28 篇文章 0 订阅
10 篇文章 1 订阅

1. 部署环境

(1)安装要求

  • 一台或者多台虚拟机,操作系统CentOS7.x-86_64或者更高版本;
  • 硬件配置:2GB或者更多RAM,2个CPU或者更多CPU,硬盘30G+;
  • 可以访问外网,以便拉取镜像,如果服务器不能上网,需提前下载镜
    并导入到节点;
  • 禁用swap分区

(2)环境规划
在这里插入图片描述

角色IP
master192.168.0.1
node192.168.0.2
node192.168.0.3

2. Kubernetes部署

2.1、kubeadm部署

kubeadm是官方社区推出的一个用于快速部署kubernates集群工具,该工具通过两条命令即可完成一个kubernetes集群的部署:
(1)创建一个Master节点 kubeadm init
(2)将Node节点加入到当前集群中 $kubeadm join <Master节点的IP和端口>,详细步骤如下:

2.1.1、虚拟机系统配置

(1)关闭防火墙

  systemctl stop firewalld    #临时关闭防火墙
  systemctl disable firewalld  #永久关闭防火墙
  #辅助命令: systemctl status firewalld 查看防火墙状态

(2)关闭selinux

 setenforce 0                   #临时关闭
 sed -i 's/enforcing/disabled/' /etc/selinux/config #永久关闭
 #辅助命令: sestatus            #查看SElinux状态

(3)关闭swap

 swapoff -a   #临时关闭
 sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
 #辅助命令   sfdisk -l  显示分区信息

(4)设置主机名称和hosts配置

 hostnamectl set-hostname k8s-master
 hostnamectl set-hostname k8s-node1
 hostnamectl set-hostname k8s-node2

并在master节点添加hosts

 cat >> /etc/hosts << EOF
 192.168.0.1 k8s-master
 192.168.0.2 k8s-node1
 192.168.0.3 k8s-node2
 EOF

(5)将桥接的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  #让配置生效

(6)时间同步

 yum install ntpdate -y
 ntpdate time.windows.com   #校时服务器,可是其他服务器
 #辅助命令:date 查看系统时间
2.1.2、在所有节点安装Docker/kubeadm/kubelet

Kubernetes模式CRI(容器运行时)为Docker,因此必须先安装Docker环境。
(1)在线安装docker,离线安装请参考《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.09.9-3.el7
 systemctl enable docker && systemctl start docker
 #辅助命令:docker -v  查看docker版本
 #配置镜像仓库地址
 cat > /etc/docker/daemon.json << EOF
 {
 	"registry-mirrors":["https://mirrors.aliyun.com"]
 }
 EOF

(2)添加k8s的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)安装kubeadm,kubelet和kubectl
由于k8s版本更新频繁,这里指定版本号部署:

 yum install -y kubelet-1.18.20 kubeadm-1.18.20 kubectl-1.18.20
 systemctl enable kubelet
 #辅助命令: kubelet version 查看安装版本
 #辅助命令: kubeadm version 查看安装版本
 #辅助命令: kubectl version 查看安装版本

(4)部署Kubernetes Master节点
在192.168.0.1(Master),由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址,执行命令:

 #apiserver-advertise-address 对应本机ip地址
 #cidr  和当前网段不冲突即可
 kubeadm init \
 --apiserver-advertise-address=192.168.0.1 \
 --image-repository registry.aliyuncs.com/google_containers \
 --kubernetes-version v1.18.20 \
 --service-cidr=10.96.0.0/12 \
 --pod-network-cidr=10.244.0.0/16

拉取完后的镜像列表:
在这里插入图片描述
master部署成功输出如下:
注意:执行成功后的kubeadm join命令,拷贝到Node节点执行;
在这里插入图片描述
使用kubectl命令工具,在master节点按顺序执行如下命令:

 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  #查看k8s集群节点

查看k8s集群节点,显示如下:
在这里插入图片描述
(5)加入Kubernetes Node节点
在(Node)执行
向集群添加新节点,执行在kubeadm init成功输出的kubeadm join命令

kubeadm join 192.168.0.135:6443 --token uvuy75.duzcnpu8an98hwbh \
    --discovery-token-ca-cert-hash sha256:e12720ed2c135cf547c479d4e5ea33a36c97c63e1326ec7140232227edf2e32a

默认token的有效期为24h,当token过期后,该token将不可用,这时就需要重新创建token,操作如下:

 kubeadm token create --print-join-command #仅在集群token过期后生成,然后node再加入集群

执行命令成功输出如下:
在这里插入图片描述
再次查看k8s集群节点,因缺少网络组建,显示如下:
在这里插入图片描述
(6)部署CNI网络插件
为了要让 Kubernetes Cluster 能够正常工作,必须安装 Pod 网络,否则 Pod 之间无法通信。Kubernetes 支持多种网络方案,这里我们使用 flannel,在Master节点执行即可。

 wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

方法1: 默认镜像地址无法访问,通过sed命令修改为docker hub镜像仓库,注意仓库为国外仓库(目前被墙挡住),执行命令如下:

 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  kubectl get pods -n kube-system   #检查 Pod 的状态,可能存在ImagePullError(镜像拉取失败)

在这里插入图片描述
方法2(建议):

a. 通过https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 链接将kube-flannel.yml文件下载到本地,并拷贝到Linux环境目录/opt/k8s.
b. 从阿里云拉取flannel镜像,当前最新版本docker pull registry.cn-hangzhou.aliyuncs.com/k8sos/flannel:v0.13.1-rc2
c. 将kube-flannel.yml文件中的镜像名称(image: quay.io/coreos/flannel:vxx)全部替换为:registry.cn-hangzhou.aliyuncs.com/k8sos/flannel:v0.13.1-rc2
d. 重新应用kube-flannel.yaml,执行命令: kubectl apply -f /opt/k8s/kube-flannel.yml
c. 检查Pod状态,执行命令:kubectl get pods -n kube-system
部署成功后运行如下:
在这里插入图片描述

(7)测试Kubernetes集群
在Kubernetes集群中创建一个Pod,验证是否正常运行:

kubectl create deployment nginx --image=nginx  #自动联网下载nginx镜像
kubectl expose deployment nginx --port=80 --type=NodePort #对外暴露80映射端口
kubectl get pod,svc

在这里插入图片描述
访问地址:http://NodeIP:Port(此处为32445),或者通过命令curl GET http://192.168.0.1:32445访问,输出nginx默认页面如下:
在这里插入图片描述
(8)其他常用命令

 kubectl get nodes
 kubectl get pods
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moutai码哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值