01-kubeadm部署K8s集群


Kubeadm 是一个提供了 kubeadm init 和 kubeadm join 的工具,作为创建Kubernetes 集群的“快捷途径” 的最佳实践。 kubeadm 通过执行必要的操作来启动和运行最小可用集群。 按照设计,它只关注启动引导,而非配置机器

环境准备

终端 xhell 7

OS centos7.9

规划如下

主机名IPgatewayCPU内存
master192.168.236.40192.168.236.22核4G30G
node01192.168.236.45192.168.236.21核2G40G
node02192.168.236.46192.168.236.21核2G40G
node03192.168.236.47192.168.236.21核2G40G

基本配置(针对所有节点)

1.更换软件源

默认的centos的源比较慢,因此我们可以选择更换成阿里的镜像源,也可以配置阿里的镜像源加速

#先下载wget命令
[root@master ~]# yum install -y wget


#备份原有的repo源
[root@master ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

#下载新的repo源(centos7)
[root@master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

#生成新的缓存
[root@master ~]# yum makecache

#检查是否配置成功
[root@master ~]# yum -v repolist |grep aliyun
2.安装systemctl自动补全命令插件
[root@master ~]#yum -y install bash-completion
3.修改主机名

根据上面的规划,将每个主机的主机名对应修改

[root@master ~]#hostnamectl set-hostname matser(对应着不同的主机名)
4.针对k8s集群安装部署的基本配置
#关闭防火墙
[root@master ~]# systemctl stop firewalld.service &&systemctl disable firewalld.service

#关闭selinux
[root@master ~]# setenforce 0 && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 

#关闭swap交换内存
[root@master ~]# cp /etc/fstab /etc/fstab.bak  #备份,防止操作出错
[root@master ~]# swapoff -a && sed -i 's/^[^#].*swap*/#&/g' /etc/fstab #关闭swap

*** sed -i 's/^[^#].*swap*/#&/g' /etc/fstab解释 ***
sed 是一种在线编辑器,它一次处理一行内容,-i选项可以直接修改文件内容,
s/string1/string2/g: 表示将匹配到的string1替换成string2
^[^#].*swap*:正则表达式,表示匹配以 非# 开头的 含有swap字符串 的字符串
#&:#是我们需要添加的注释标记,&代表sed在上次匹配成功的字符串
***

#添加ip和主机之间的映射关系
[root@master ~]# cat >> /etc/hosts << EOF
> 192.168.236.40 master
> 192.168.236.45 node01
> 192.168.236.46 node02
> 192.168.236.47 node03
> 199.232.68.133 raw.githubusercontent.com  #防止之后的flanner资源清单获取失败
> EOF

#打开ipv6流量转发
[root@master ~]# cat > /etc/sysctl.d/k8s.conf << EOF
> net.ipv4.ip_forward = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF

[root@master ~]# sysctl --system #使ipv6转发功能立即生效


#同步时间
如果时间不同步,需要同步时间
1.安装ntpdate
[root@master ~]#yum -y install ntpdate
2.同步时间
[root@master ~]#ntpdate -u  pool.ntp.org
3.检查是否同步
[root@master ~]#date
5.安装必要的软件
#安装vim,lrzsz
[root@master ~]# yum install -y vim lrzsz

#安装docker-ce
1.安装必要的依赖
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2.配置docker-ce的repo源
[root@master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装docker-ce
[root@master ~]# yum -y install docker-ce

4.启动docker并设置开机自启
[root@master ~]# systemctl start docker && systemctl enable docker

5.查看docker版本
[root@node03 ~]# docker -v

#安装kubernetes及相关服务
1.添加kubernetes的阿里repo源
[root@master ~]# 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

2.列出可供下载的版本,选择安装
[root@master ~]# yum list kubeadm --showduplicates

3.我们这里选择1.19.4,安装kubectl/kubeadm/kubelet (matser节点全部安装 node节点不需要安装 kubectl)
[root@master ~]# yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4

4.设置kubelet开机自启
[root@master ~]# systemctl enable kubelet

配置master节点

使用kubeadm init 初始化master节点

[root@master ~]# kubeadm init \ 
--apiserver-advertise-address=192.168.236.40 \  #对应master的ip地址
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ #默认是k8s的站点,很慢 建议将其换成阿里云
--kubernetes-version v1.19.4 \  #对应之前下载的版本号
--service-cidr=10.1.0.0/16 \	
--pod-network-cidr=10.244.0.0/16 #代表使用flannel

当出现如下界面时,则代表master初始化成功

在这里插入图片描述

根据提示执行对应操作

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

安装pod网络插件(CNI)

可以选择通过网络去下载flannel镜像,但是对网速限制很大。想使用该方法的可以通过百度去获取

因为网络问题,在这里我选择通过导入原有的flannel镜像文件

flannel镜像压缩包百度网盘地址,提取码mgi8

1.导入flannel镜像压缩包
[root@master ~]# docker load < flannel-0.12.0.tar

2.查看镜像
[root@master ~]# docker images |grep flannel
quay.io/coreos/flannel  v0.12.0-amd64   4e9f801d2217   10 months ago   52.8MB

3.下载flannel配置文件
[root@master ~]# curl -o kube-flannel.yml   https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4.修改配置文件镜像
[root@master ~]# sed -i 's/flannel:v0.13.1-rc1/flannel:v0.12.0-amd64/g' kube-flannel.yml

5.创建flannel服务
[root@master ~]# kubectl apply -f kube-flannel.yml

6.检查是否创建成功 需要等待一会,之后变成Running状态则成功
[root@master ~]# kubectl get pod -n kube-system | grep kube-flannel

node节点加入集群

1.在node上安装flannel

[root@node01 ~]# docker load < flannel-0.12.0.tar.gz

2.node加入集群 使用之前的认证命令

[root@node01 ~]#kubeadm join 192.168.236.40:6443 --token 1t9axt.e4d5x22mokupxh72 \
    --discovery-token-ca-cert-hash sha256:b7e2b05523ca6de4faf4db8fbccca7fa26a92e67df15ddb7a7a73b732ae0e0be

当显示如下界面时,代表加入成功
在这里插入图片描述

3.之后在master节点上面检查是否成功

[root@master ~]# kubectl get node
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   90m   v1.19.4
node01   Ready    <none>   90s   v1.19.4
node02   Ready    <none>   90s   v1.19.4
node03   Ready    <none>   90s   v1.19.4

此时代表node节点已经处于就绪状态

4.检查组件状态信息

[root@master ~]# kubectl  get cs

发现组件unhealthy, 并报错,如下图所示

在这里插入图片描述
此时,我们需要修改 /etc/kubernetes/manifests/下面对应的yaml文件

kube-controller-manager.yaml kube-scheduler.yaml

将里面的 --port=0 去掉,保存退出即可,过一会便会显示Healthy状态

*小技巧 kubectl 命令自动补全

[root@master ~]#  source <(kubectl completion bash) 
[root@master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值