在CentOS 8.2上安装Kubernets集群

网友投稿 209 2022-10-23

在CentOS 8.2上安装Kubernets集群

本人最近在学习K8S相关的技术,需要在虚拟机上安装和配置一个简单的K8S群集,所以也整理安装步骤出来,分享出来给大家一个参考,让需要安装K8S集群的小伙伴少走点弯路,我将会从零开始介绍,如何一步一步安装K8S集群。

安装环境:

虚拟机软件:VMware Workstation 16 (当然,低一点的版本也是可以的,只要支持CentOS 8)

操作系统:CentOS-8.2.2004-x86_64-minimal

K8S-Master IP:  192.168.0.20

K8S-Node1 IP: 192.168.0.21

YUM源:国内阿里YUM源

​第一步:在VMware Workstation上安装CentOS-8.2操作系统​

打开VMware Workstation软件,在主界面左上角->文件->新建虚拟机。

选“典型”,然后“下一步”

选“稍后安装操作系统”, 然后“下一步”

这里选“Linux”, 版本:CentOS 8 64位

输入一个你喜欢的虚拟机名字和虚拟机文件的存放位置

设置虚拟机的硬盘,控制节点是不跑大的数据的,所以100G已经足够了

点“自定义硬件”

内存建议最少8G,处理器建议最少1到2核,网卡选 “桥接模式”, CD/DVD添加CentOS-8.2.20的ISO文件

虚拟机的壳创建好后,就开机进行安装CentOS 8操作系统

选“Install CentOS Linux 8“

选“Englist”,因为这次用minimal版本,没有图形界面的,可以直接使用英语,建议小伙伴可以安装DVD版本,并且安装图形界面和浏览器的。

点“Installation Destination”

当然还要设置一下root密码

等待10几分钟后,完成CentOS 8的操作系统安装,并完成重启。

​第二步:CentOS 8的系统基本设置

修改主机名

​[root@localhost ~]#  hostnamectl set-hostname --static master

修改网卡

[root@localhost ~]# vi/etc/sysconfig/network-scripts/ifcfg-ens160

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.0.20       (设置自己路由器的一个可用IP)

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

DNS1=114.114.114.114

[root@localhost ~]# nmcli c up ens160

[root@localhost ~]# nmcli d reapply ens160

[root@localhost ~]# nmcli d connect ens160

[root@localhost ~]# nmcli c reload ens160                                   重启ens160这张网卡

[root@k8s-master ~]# ip ad                                              检查是否可以正常获得IP地址

[[root@k8s-master ~]# ping baidu.com                      检查是否可以访问外网

设置hosts

[root@k8s-master ~]# vi /etc/hosts

配置阿里YUM源

[root@k8s-master ~]# mkdir /etc/yum.repos.d/bak

[root@k8s-master ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

[root@k8s-master ~]# cd /etc/yum.repos.d/bak/

[root@k8s-master ~]# ​cp CentOS-AppStream.repo CentOS-Base.repo CentOS-centosplus.repo CentOS-Extras.repo CentOS-HA.repo CentOS-PowerTools.repo ..​

[root@k8s-master ~]# cd ..

[root@k8s-master ~]# vi CentOS-Base.repo

[BaseOS]

name=CentOS-$releasever - Base

#mirrorlist=~]# vi CentOS-AppStream.repo

[AppStream]

name=CentOS-$releasever - AppStream

#mirrorlist=~]# vi CentOS-centosplus.repo

[centosplus]

name=CentOS-$releasever - Plus

#mirrorlist=~]# vi CentOS-Extras.repo

[extras]

name=CentOS-$releasever - Extras

#mirrorlist=~]# vi CentOS-HA.repo

[HighAvailability]

name=CentOS-$releasever - HA

#mirrorlist=~]# vi CentOS-PowerTools.repo

[PowerTools]

name=CentOS-$releasever - PowerTools

#mirrorlist=~]# dnf clean all

[root@k8s-master ~]# dnf makecache

[root@k8s-master ~]# dnf repolist

安装系统一些必要的软件包:

[root@k8s-master ~]# yum install -y net-tools bash-completion lsof git nano vim wget curl zip perl lrzsz bind-utils gcc

[root@k8s-master ~]# firewall-cmd --set-default-zone=trusted          --关闭系统防火墙

[root@k8s-master ~]# systemctl stop firewalld.service                        --停止防火墙

[root@k8s-master ~]# systemctl disable firewalld.service                   --禁用防火墙开机时启动

[root@k8s-master ~]# systemctl status firewalld.service                     --查看防火墙状态

[root@k8s-master ~]# sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config   --禁用selinux

关闭swap,注释swap分区

[root@k8s-master ~]# swapoff -a    --暂时关闭

[root@k8s-master ~]# vi /etc/fstab    --永久关闭

在/dev/mapper/cl-swap这行的开头,加个#号注释这行​

配置内核参数,将桥接的IPv4流量传递到iptables的链

[root@k8s-master ~]# cat > /etc/sysctl.d/k8s.conf <

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

​[root@k8s-master ~]# sysctl --system

做到这一步建议关机,创建一个虚拟机快照。

​第三步:Kubernets控制节点的安装步骤​

安装社区版Docker​

安装必要的一些系统工具包

[root@k8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

添加阿里yum源,速度飞快

[root@k8s-master ~]# yum-config-manager --add-repo ​​~]# yum -y install docker-ce

[root@k8s-master ~]# docker  -v   --检查docker版本

[root@k8s-master ~]# systemctl status docker.service   --检查docker服务的状态

添加阿里-docker仓库加速器

[root@k8s-master ~]# mkdir -p /etc/docker

[root@k8s-master ~]# tee /etc/docker/daemon.json<<-'EOF'

{ "registry-mirrors":["~]# systemctl daemon-reload              --重新加载Docker的服务

[root@k8s-master ~]# systemctl restart docker                      --重启Docker服务

[root@k8s-master ~]# systemctl enable docker.service           --开机启动Docker服务

[root@k8s-master ~]# systemctl status docker.service            --检查Docker服务状态

确保Docker是正常运行的

安装kubectl、kubelet、kubeadm

添加阿里kubernetes的YUM源

[root@k8s-master ~]# cat </etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=Kubectl Kubelet Kubeadm​

安装过程中观察一下kubectl kubelet kubeadm安装的版本

[root@k8s-master ~]# yum install kubectlkubelet kubeadm -y

[root@k8s-master ~]# systemctl enablekubelet

[root@k8s-master ~]# kubectl version                           --查看kubectl的版本

​kubectl-version=1.23.3

注意:这里的kubectl版本为1.23.3,下面安装Kubelet时必要跟这个版本要一致,不然会报错

解决kubelet初始化时,C-group的报错问题

[root@k8s-master ~]# cat >/etc/docker/daemon.json <

{"exec-opts":["native.cgroupdriver=systemd"]}

EOF

[root@k8s-master ~]# systemctl restart docker                                              --重启docker

​第四步:初始化Kubernetes集群​

注意:上面的kubectl版本为1.23.3,这里安装Kubelet时必要跟123.3版本要一致,不然会报错

[root@k8s-master ~]# kubeadm init --kubernetes-version=1.23.3  \

--apiserver-advertise-address=192.168.0.20   \

--image-repositoryregistry.aliyuncs.com/google_containers \

--service-cidr=10.10.0.0/16--pod-network-cidr=10.122.0.0/16

参数说明:

192.168.146.20 --> API Server IP (也是K8S-Master的IP地址,因为API安装在Master上)

image-repository registry.aliyuncs.com/google_containers      -->  注册仓库地址,这个是国内阿里云的资源

10.10.0.0/16          --->  这个是CIDR内部网段,一般可以不修改

10.122.0.0/16        ---> 这个是POD内部使用的网段,一般可以不修改

​kubernetes-version   ---> 指定kubernetes指定安装的版本为1.23.3,注意版本要一致

见到下面信息表示Kubernetes群集初始化成功了

记得将Kubeadm join这两行记录下来,之后Kubernetes的节点服务器添加到Kubernetes的Master服务器时需要进行验证的

根据初始化成功Kubernetes的信息,如果需要使用的K8S群集,需要运行下面的命令。

如果你是root用户,执行下面的命令:

[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

这个是临时的命令,每次重启服务器都要执行一次,不然无法显示kubectl getpod和kubectl get node的信息

[root@k8s-master ~]# kubectl get pod--all-namespaces     --查看静态POD的服务组件

[root@k8s-master ~]# kubectl get node                           --查看节点的信息

Master节点显示NotReady的状态,这是因为corednspod没有启动,缺少网络pod,下面将安装Calico网络

​安装calico网络​

[root@k8s-master ~]# kubectl apply -f ​​~]# kubectl get pod   --all-namespaces     --等待几分钟,可以见到Calico网络的容器已正在运行中。

[root@k8s-master ~]# kubectl get node               --再次检查,已经是Ready状态了

安装Kubernetes-Dashboard

由于官方部署Dashboard的服务没使用nodeport,所以需要将yaml文件下载到本地,在service里添加nodeport

2.0.0-rc7版本--->检查是否有最新的版本

[root@k8s-master ~]# kubectl apply -f ​​~]# kubectl apply -f ~]# kubectl create -f recommended.yaml                                       ---加载安装Dashboard

[root@k8s-master ~]# kubectl get pod --all-namespaces                  --等待几分钟可以看到Dashboard在运行

​[root@k8s-master ~]# kubectl get svc -n kubernetes-dashboard​

在浏览器中输入Dashboard的IP地址进行访问,后面自己配置一个访问Token,就可以直接访问K8S的Dashboard了。

​​~]# kubeadm join192.168.0.20:6443 --token sqgnnf.m0wbjyq71gi8prat  --discovery-token-ca-cert-hashsha256:38f8c7652828f103b08e59c62300f17ceea43f0f0b5dd89bea86c6e0c0412f0d

如果Node节点是隔了很长时间才安装配置,那么Master初始化时创建的Token肯定已经过期,Token过期将会导致Master无法添加Node服务器,将用下面的命令重新创建Token

[root@k8s-master ~]#kubeadm token generate              #在Master上生成新的token

ydgyek.9aqk1imeu8gqesbd

生成新的token后,再用下面的命令来生成一个新的discovery-token

[root@k8s-master ~]#kubeadm token create ydgyek.9aqk1imeu8gqesbd --print-join-command --ttl=0

跑完上面两条命令,将会在Master上输出一个在节点上加入Master的全新token.

kubeadm join 192.168.0.20:6443 --token ydgyek.9aqk1imeu8gqesbd --discovery-token-ca-cert-hashsha256:38f8c7652828f103b08e59c62300f17ceea43f0f0b5dd89bea86c6e0c0412f0d

​将Master上输出的命令,直接在Node节点上跑,将节点加入到Master服务器

在Node1上,见到下面的信息,表示已经成功将Node加入到Master

[root@k8s-master ~]# kubectl get node     --在Master上可以见到Node已经存在了

为什么会显示NotReady呢。因为还需要在Node上跑下面这个命令。

[root@k8s-node1 ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

[root@k8s-master ~]# kubectl get node     --再检查一次变成Ready了

在此已完成了在CentOS上完成安装K8S的集群配置了,这个只是前面的基本安装配置,如果需要使用到更多的K8S功能,需要你们另外找其他更专业的文档去进行配置。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:50个机器学习实用API
下一篇:Map映射LinkedHashSet与LinkedHashMap应用解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~