k8s:搭建k8s集群

一:准备三台服务器

        一台用作主机服务器,两台用作节点服务器

二:搭建环境(三台机器都需要操作)

1.关闭SELinux

        原因:这个是用来加强安全性的一个组件,但非常容易出错且难以定位,一般上来装完系统就先给禁用了。

        通过运行命令 setenforce 0 和 sed ... 将 SELinux 设置为 permissive 模式 可以有效地将其禁用。 这是允许容器访问主机文件系统所必需的,而这些操作时为了例如 Pod 网络工作正常。

[root@k8s-node-1 ~]# sudo setenforce 0
[root@k8s-node-1 ~]# sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

2.关闭SWAP

        原因:这个当内存不足时,linux会自动使用swap,将部分内存数据存放到磁盘中,这个这样会使性能下降,为了性能考虑推荐关掉。

[root@k8s-node-1 ~]# swapoff -a
[root@k8s-node-1 ~]# vi /etc/fstab

注释这一行:/mnt/swap swap swap defaults 0 0
保存退出

查看swap是否为0
[root@k8s-node-1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          15615         899       12240           2        2475       14370
Swap:             0           0           0

3.关闭防火墙

        原因:防火墙,会对所有网络流量进行过滤、转发,如果是内网机器一般都会直接关闭,省的影响网络性能,但k8s不能直接关了,k8s是需要用防火墙做ip转发和修改的,当然也看使用的网络模式,如果采用的网络模式不需要防火墙也是可以直接关闭的

[root@k8s-node-1 ~]# systemctl stop firewalld
[root@k8s-node-1 ~]# systemctl disable firewalld

4.同步服务器的时间

        原因:时间不同步的情况下,k8s节点会搭建不成功

[root@k8s-node-1 ~]# yum install ntpdate -y

[root@k8s-node-1 ~]# ntpdate time.windows.com

[root@k8s-node-1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

四:安装(三台机器都需要操作)

需要在每台机器上安装以下的软件包:

  • kubeadm:用来初始化集群的指令。

  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。

  • kubectl:用来与集群通信的命令行工具。

1.创建阿里的yum源文件


[root@k8s-node-1 ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
> [kubernetes]
> name=Kubernetes
> baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
> enabled=1
> gpgcheck=1
> repo_gpgcheck=1
> 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@k8s-node-1 ~]# yum install -y kubelet kubeadm kubectl

ps:由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 

[root@k8s-node-1 ~]# yum install -y --nogpgcheck kubelet kubeadm kubectl

3.设置开机启动

[root@k8s-node-1 ~]# systemctl enable docker
[root@k8s-node-1 ~]# systemctl enable kubelet

五:集群搭建

1.主机搭建(初始化集群)注:只需要在集群主机上操作,两台节点服务器不需要

[root@k8s-node-1 ~]# kubeadm init \
> --kubernetes-version 1.22.4 \
> --apiserver-advertise-address=0.0.0.0 \
> --service-cidr=10.96.0.0/16 \
> --pod-network-cidr=10.245.0.0/16 \
> --image-repository registry.aliyuncs.com/google_containers

注:初始化完成后保留最后kubeadm join打印的参数,用来给node接入集群时使用

1.1.将Kubernetes系统管理员的认证配置文件admin.conf复制到默认的目录下:

[root@k8s-node-1 /]# mkdir ~/.kube
[root@k8s-node-1 ~]# cp /etc/kubernetes/admin.conf ~/.kube/config

1.2.查看是否配置完成

[root@k8s-node-1 ~]# kubectl get node
NAME         STATUS     ROLES                  AGE   VERSION
k8s-node-1   NotReady   control-plane,master   23m   v1.22.4

1.3.安装Pod网络附加组件

[root@k8s-node-1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

1.3.1.确认组件状态为Running

[root@k8s-node-1 ~]# kubectl get pods -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-7f6cbbb7b8-ss8h4             1/1     Running   0          31m
coredns-7f6cbbb7b8-ttj9b             1/1     Running   0          31m
etcd-k8s-node-1                      1/1     Running   0          31m
kube-apiserver-k8s-node-1            1/1     Running   0          31m
kube-controller-manager-k8s-node-1   1/1     Running   0          31m
kube-flannel-ds-292sj                1/1     Running   0          3m35s
kube-proxy-kptd5                     1/1     Running   0          31m
kube-scheduler-k8s-node-1            1/1     Running   0          31m

2.集群节点操作(加入节点)

需要获取主机的token和sha256的值,就是这个

注:主机初始化完成后保留最后kubeadm join打印的参数,用来给node集群时使用

如果忘记留着也不要紧,重新获取一下就行

2.1.获取主机master的token

注:token有过期时间,过期了重新获取就可以

[root@k8s-node-1 ~]# kubeadm token create
j5lmjo.dyehwv7n46ngmdu3

2.2.获取主机master的sha256

[root@k8s-node-1 ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

2.3.第一台节点服务器加入节点

//注意复制的时候带着空格
[root@k8s-node-2 ~]# kubeadm join 主机的IP地址:6443 \
> --token j5lmjo.dyehwv7n46ngmdu3 \
> --discovery-token-ca-cert-hash sha256:9dc2474f133f538b6ddf17fcdafdf1e73d99c6fc2cfd19b4ea2d46e819e42a44 \
> --ignore-preflight-errors=Swap \
> -v5

2.4.第二台节点服务器加入节点

//注意复制的时候带着空格
[root@k8s-node-3 ~]# kubeadm join 主机的IP地址:6443 \
> --token j5lmjo.dyehwv7n46ngmdu3 \
> --discovery-token-ca-cert-hash  sha256:9dc2474f133f538b6ddf17fcdafdf1e73d99c6fc2cfd19b4ea2d46e819e42a44 \
> --ignore-preflight-errors=Swap \
> -v5

2.5.在集群主机上查看节点服务器是否加入集群

[root@k8s-node-1 ~]# kubectl get nodes
NAME         STATUS   ROLES                  AGE     VERSION
k8s-node-1   Ready    control-plane,master   2d20h   v1.22.4
k8s-node-2   Ready    <none>                 170m    v1.22.4
k8s-node-3   Ready    <none>                 3m42s   v1.22.4

k8s集群搭建完成!

 --------------------------------------------------
❤ 如果本篇博客对您有一定的帮助,大家记得点赞、留言、关注哦❤ 
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

狼彡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值