Kubernetes(K8S) 集群环境搭建指南

Kubernetes(简称K8s)是一个开源的容器编排平台,旨在自动化部署、扩展和管理容器化应用。K8S环境搭建过程比较复杂,涉及到非常多组件安装和系统配置,本文将会详细介绍如何在服务器上搭建好Kubernetes集群环境。

 

在学习和使用Kubernetes过程中,K8S环境搭建是新手非常头疼的一环,K8S提供了多种安装的方式包括Minikube、kubeadm、Rancher、sealos等,目前比较常见的是采用kubeadm和sealos方式进行安装,sealos相比kubeadm更加适合入门学习者,只需要几条命令就可以完成整个集群的部署。而Kubeadm适用于生产环境和复杂场景,针对希望有更多个性化定制的用户,但安装和维护复杂度较高。本文包含了kubeadm和sealos两种方式的安装,作为新手更加推荐使用sealos。

集群环境准备

1、集群环境说明

要求条件:

  1. 一台或多台Linux系统机器,推荐使用的是centos 7.5版本或以上

  2. 每台Linux至少有2GB的内存和2个CPU、硬盘30GB

  3. 所有的机器可以相互ping通

集群结构:

  • kubernetes集群主要包含master(主控节点)和node(工作节点)组成,master和node一般是多对多或者一对多的模式,

  • 为了学习使用这里选择1个master节点和多个node节点(这里一个节点相当于就是一台Linux系统主机)

    部署集群图如下:

图片

这里为了学习方便,采用了在本地电脑安装虚拟软件VMware(当然也可以使用VitualBox),然后再虚拟机VMware中安装centos,虚拟机安装centos过程省略,大家可以自行百度搜索相关教程,这里分别这里分别安装好master、node1、node2虚拟机:

图片

2、配置节点主机名

执行以下命令,依次配置各个节点主机名,这里是为了方便后面服务的访问

# master节点[root@localhost ~]# hostnamectl set-hostname master && bash# node1节点[root@localhost ~]# hostnamectl set-hostname node1 && bash# node2节点[root@localhost ~]# hostnamectl set-hostname node2 && bash

3、配置节点网络

进入VMware -> 设置 ->虚拟网络编辑器,查看VMnet8对应的子网IP地址:

图片

分别编辑各个节点的网络配置文件

[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改以下关键项

master节点:

ONBOOT=yesIPADDR=192.168.10.100GATEWAY=192.168.10.2DNS1=114.114.114.114

node1节点:

ONBOOT=yesIPADDR=192.168.10.101GATEWAY=192.168.10.2DNS1=114.114.114.114

node2节点:

ONBOOT=yesIPADDR=192.168.10.102GATEWAY=192.168.10.2DNS1=114.114.114.114

4、修改hosts文件

编辑/etc/hosts文件,配置主机名和IP地址的映射解析,这一步是为了方便节点间的相互访问,分别在三台主机下添加以下的配置:​​​​​​​

192.168.10.100 master192.168.10.101 node1192.168.10.102 node2

图片

5、测试虚拟机网络

通过Xshell ssh工具去连接对应的节点主机(其他的ssh连接工具都可以)

测试各个节点主机是否能够访问外网:

图片

测试各个节点主机之间是否能够相互ping通

图片

集群环境初始化

1、关闭防火墙

在三个节点上分别执行​​​​​​​

[root@master ~]# systemctl stop firewalld[root@master ~]# systemctl disable firewalld

2、关闭SELINUX

在三个节点上分别执行​​​​​​​

# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disableSELINUX=disabled

注意:生效需要重启linux

3、关闭swap分区

在三个节点上分别执行​​​​​​​

# 编辑/etc/fstab 文件,注释掉 /dev/mapper/centos-swap swap 这一行# /dev/mapper/centos-swap swap

注意:生效需要重启linux

4、修改内核参数

在三个节点上分别执行​​​​​​​

# 增加/etc/sysctl.d/kubernetes.conf 文件,添加如下配置:net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1# 重新加载配置[root@master ~]# sysctl -p# 加载网桥过滤模块[root@master ~]# modprobe br_netfilter# 查看网桥过滤模块是否加载成功[root@master ~]# lsmod | grep br_netfilter

出现如下结果代表OK:

图片

5、配置时间同步

在三个节点上分别执行

[root@master ~]# systemctl start chronyd[root@master ~]# systemctl enable chronyd[root@master ~]# date

6、加载ipvs模块

在三个节点上分别执行​​​​​​​

# 1.安装ipset和ipvsadm[root@master ~]# yum install ipset ipvsadm -y# 2.添加需要加载的模块写入脚本文件[root@master ~]# cat <<EOF> /etc/sysconfig/modules/ipvs.modules# 将以下脚本内容复制到命令行回车即可#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOF

图片

# 3.为脚本添加执行权限[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules# 4.执行脚本文件[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules# 5.查看对应的模块是否加载成功[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

图片

以上操作完成之后记得分别重启Linux主机!!!

sealos方式安装K8S集群

1、下载sealos

wget https://github.com/labring/sealos/releases/download/v4.3.7/sealos_4.3.7_linux_amd64.tar.gz

2、解压赋予权限

tar zxvf sealos_4.3.7_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin

3、安装K8S集群

sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \--masters 192.168.10.100 \--nodes 192.168.10.101,192.168.10.102 -p root 

参数说明:

  • --masters master 节点地址列表

  • –nodes node 节点地址列表

  • -p ssh登录密码(如果配置了ssh免密则不需要加-p参数)

4、查看连接状态

在master节点上面执行kubectl get nodes命令查看master和node节点状态

[root@master ~]# kubectl get nodes

这里会显示 NotReady ,代表未就绪状态:

图片

需要等待一会儿,节点状态会自动被修改为Ready:

图片

kubeadm方式安装K8S集群

1、安装Docker

# 1、切换镜像源[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 2、查看当前镜像源中支持的docker版本[root@master ~]# yum list docker-ce --showduplicates
# 3、安装特定版本的docker-ce[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
# 4、添加一个配置文件[root@master ~]# mkdir /etc/docker[root@master ~]# cat <<EOF> /etc/docker/daemon.json{  "exec-opts": ["native.cgroupdriver=systemd"],  "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]}EOF
# 5、启动dokcer[root@master ~]# systemctl restart docker[root@master ~]# systemctl enable docker

2、安装Kubernetes组件

​​​​​​​

# 1、由于kubernetes的镜像在国外,速度比较慢,这里切换成国内的镜像源,编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgchech=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg      http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# 2、安装kubeadm、kubelet和kubectl[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
# 3、配置kubelet的cgroup,编辑/etc/sysconfig/kubelet, 添加下面的配置KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"KUBE_PROXY_MODE="ipvs"
# 4、设置kubelet开机自启[root@master ~]# systemctl enable kubelet

3、准备集群镜像​​​​​​​

# 1、在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看[root@master ~]# kubeadm config images list
# 2、下载镜像,此镜像kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替换方案images=(  kube-apiserver:v1.17.4  kube-controller-manager:v1.17.4  kube-scheduler:v1.17.4  kube-proxy:v1.17.4  pause:3.1  etcd:3.4.3-0  coredns:1.6.5)
for imageName in ${images[@]};do  docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName  docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName  docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done

4、master节点集群初始化

在master节点上面执行kubeadm init命令进行集群初始化​​​​​​​

# 1、创建集群,这里192.168.119.100 指定为master主机的IP地址,其他的配置不用修改[root@master ~]# kubeadm init \  --kubernetes-version=v1.17.4 \  --service-cidr=10.96.0.0/12 \  --pod-network-cidr=10.244.0.0/16 \  --apiserver-advertise-address=192.168.119.100 # 2、创建必要文件[root@master ~]# mkdir -p $HOME/.kube[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

5、node节点连接master节点

在node1和node2节点上分别去连接master节点集群

kubeadm join 192.168.10.100:6443 --token c78u0z.tqyd4xh4tc2s084f     --discovery-token-ca-cert-hash sha256:783e7453cb11db521a7fc3661caa0ac5cf6c6fb153d7d95d222882af7aae94c7

6、查看连接状态

在master节点上面执行kubectl get nodes命令查看master和node节点状态

[root@master ~]# kubectl get nodes

这里会显示 NotReady ,代表未就绪状态,我们还需要安装网络插件

图片

7、安装网络插件

在master节点上安装网络插件​​​​​​​

# 1、下载flannel网络资源配置文件[root@master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 2、启动flannel网络[root@master ~]# kubectl apply -f kube-flannel.yml
# 3、再次查看节点状态[root@master ~]# kubectl get nodes

这里启动flannel网络之后一般需要等待一会儿,节点状态会被修改为Ready:

图片

集群环境测试​​​​​​​

# 1、创建nginx服务kubectl create deployment nginx  --image=nginx:1.14-alpine
# 2、暴露端口kubectl expose deployment nginx --port=80 --type=NodePort
# 3、查看pod和服务信息kubectl get pod,service

图片

在本地电脑打开浏览器测试nginx是否能够正常访问:

图片


  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建 Docker KubernetesK8s集群,你可以按照以下步骤进行操作: 1. 安装 Docker:在每个节点上安装 Docker,可以按照 Docker 官方文档的指引进行安装。确保所有节点上都安装了相同版本的 Docker。 2. 安装 Kubernetes:可以使用各个操作系统的包管理器(如 apt、yum 等)或者直接下载二进制文件来安装 Kubernetes。你可以参考 Kubernetes 官方文档中的安装指南。 3. 初始化 Master 节点:选择其中一个节点作为 Master 节点,运行以下命令初始化: ``` kubeadm init ``` 这将生成一个 Token 和一个命令,用于其他节点加入集群。 4. 加入 Worker 节点:在其他节点上运行初始化命令生成的加入命令,将它们加入集群。例如: ``` kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash> ``` `<master-ip>` 和 `<master-port>` 是 Master 节点的 IP 地址和端口,`<token>` 和 `<hash>` 是初始化命令生成的 Token 和哈希值。 5. 配置 Kubectl:在你的本地机器上安装并配置 Kubectl,可以按照 Kubernetes 官方文档中的指引进行操作。这将允许你与集群进行交互。 6. 部署应用:使用 Kubernetes 的 YAML 配置文件编写应用的部署描述,并使用以下命令在集群上部署应用: ``` kubectl apply -f <deployment-file> ``` `<deployment-file>` 是应用的部署描述文件的路径。 7. 扩展和管理集群:使用 Kubectl 命令扩展、更新、删除应用,以及管理集群中的节点和资源。例如: - 扩展应用的副本数:`kubectl scale deployment <deployment-name> --replicas=<replica-count>` - 更新应用:`kubectl apply -f <updated-deployment-file>` - 删除应用:`kubectl delete deployment <deployment-name>` - 查看集群状态:`kubectl get nodes`、`kubectl get pods` 等 这些步骤可以帮助你搭建一个简单的 Docker KubernetesK8s集群。你可以根据实际需求进行配置和管理。如果需要更详细的指导,可以参考 Kubernetes 官方文档中的相关内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值