【云原生第四章】从零到一,轻松搭建高效K8s集群

目录

一、准备环境

1. 服务器准备

2. 禁用Swap分区

3. 关闭防火墙和SELinux

4. 配置主机名和网络

5. 同步时间

二、安装Docker

1. 安装Docker依赖

2. 添加Docker仓库

3. 安装Docker

4. 启动Docker并设置为开机自启

三、安装kubeadm、kubelet和kubectl

1. 添加Kubernetes仓库

2. 禁用默认的Kubernetes仓库(如果之前添加过)

3. 安装kubeadm、kubelet和kubectl

4. 设置kubelet开机自启

四、初始化Master节点

1. 初始化Kubernetes Master

2. 配置kubectl使用Master节点的kubelet凭据

五、安装网络插件

六、加入Worker节点

七、验证集群状态

八、后续配置(可选)


        各位老师好,今天我来更新云原生的第四章内容搭建K8S集群。K8S集群,也称为Kubernetes集群,是一个容器集群管理系统,主要用于自动化部署、自动扩缩容以及维护容器化应用。K8S集群由多个组件协同工作,以提供高可用性和弹性伸缩能力。

一、准备环境

1. 服务器准备

        准备至少三台CentOS 7的服务器,一台作为Master节点,其余两台作为Worker节点。
确保所有服务器之间的网络连接畅通,并可以相互访问。

2. 禁用Swap分区

        Kubernetes不允许在节点上使用Swap分区,因此需要禁用Swap分区:

sudo swapoff -a

然后编辑/etc/fstab文件,注释掉Swap分区的相关行,防止重启后Swap被重新启用。

3. 关闭防火墙和SELinux

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

 关闭SELinux,编辑/etc/selinux/config文件,将SELINUX的值改为disabled,然后重启服务器。

4. 配置主机名和网络

        为每台服务器设置唯一的主机名,并确保它们可以通过主机名相互解析。配置静态IP地址或使用DHCP确保IP地址稳定。


5. 同步时间

        确保所有节点的时间同步,可以使用NTP服务来同步时间。

安装NTP服务:

sudo yum install -y ntp

配置NTP并启动服务:

sudo systemctl start ntpd
sudo systemctl enable ntpd

二、安装Docker

1. 安装Docker依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2. 添加Docker仓库

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3. 安装Docker

sudo yum install -y docker-ce docker-ce-cli containerd.io

4. 启动Docker并设置为开机自启

sudo systemctl start docker
sudo systemctl enable docker

三、安装kubeadm、kubelet和kubectl

1. 添加Kubernetes仓库

创建Kubernetes的yum仓库配置文件/etc/yum.repos.d/kubernetes.repo,执行命令添加以下内容:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

2. 禁用默认的Kubernetes仓库(如果之前添加过)

sudo yum-config-manager --disable kubernetes

3. 安装kubeadm、kubelet和kubectl

#安装Kubernetes组件:
sudo yum install -y kubeadm-1.22.0 kubectl-1.22.0 kubelet-1.22.0
#sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

4. 启动Kubelet服务并设置为开机自启

sudo systemctl start kubelet
sudo systemctl enable kubelet

四、初始化Master节点

1. 初始化Kubernetes Master

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

根据提示完成初始化过程,并保存输出的kubeadm join命令,以便后续用于加入Worker节点。

2. 配置kubectl使用Master节点的kubelet凭据

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

五、安装网络插件

        选择并安装一个网络插件,例如Calico或Flannel。以下是使用Calico的示例:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

六、加入Worker节点

        在之前保存的kubeadm join命令中,将<master-node-ip>替换为Master节点的IP地址,然后在每个Worker节点上运行该命令,将其加入到集群中。

七、验证集群状态

        在Master节点上运行以下命令来验证集群状态:

kubectl get nodes

如果所有节点的状态都是Ready,则表示集群搭建成功。

八、后续配置(可选)

配置存储后端,例如使用NFS、Ceph或GlusterFS等。
配置负载均衡器以实现Kubernetes集群的高可用性,例如使用Nginx或HAProxy。
安装和配置Helm等包管理工具,以方便部署和管理Kubernetes应用。

这里我们以Helm为例

Helm是Kubernetes的包管理器,类似于Ubuntu中的apt、CentOS中的yum或Python中的pip,它允许用户快速查找、下载、安装和升级软件包。Helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理。

安装和配置Helm的步骤如下:

1.安装Helm客户端

        在命令行中执行以下命令来安装Helm客户端:

curl -L https://git.io/get_helm.sh | bash

        请注意,由于国内网络原因,下载Helm包时可能会失败。此时,可以尝试使用国内的镜像源或代理来下载。

2.配置Helm

        Helm配置主要涉及设置Kubernetes集群的API Endpoint和认证信息。确保你的Kubernetes集群正在运行,并且可以从运行Helm的机器上访问集群的API Endpoint。

        使用kubectl对集群进行身份验证,确保它具有集群管理员权限。你可以通过以下命令来配置kubectl以使用你的Kubernetes集群:

kubectl config use-context <your-context-name>

其中,<your-context-name>是你在kubeconfig文件中定义的Kubernetes集群的上下文名称。

3.使用Helm部署和管理Kubernetes应用

        一旦Helm安装和配置完成,你就可以使用它来部署和管理Kubernetes应用了。Helm将Kubernetes资源(如deployments、services或ingress等)打包到一个chart中,而chart被保存到chart仓库中。通过chart仓库,你可以存储和分享chart。

使用Helm部署应用的基本步骤包括:

  1. 查找你需要的chart。你可以从Helm的官方chart仓库或其他公共chart仓库中查找。
  2. 下载chart到本地。
  3. 使用Helm命令安装chart到你的Kubernetes集群中。例如:

	helm install <chart-name> <release-name>

        其中,<chart-name>是你要安装的chart的名称,<release-name>是发布到Kubernetes集群的实例名称。

  1. 使用Helm命令管理你的应用。你可以使用Helm来升级、回滚、删除等操作你的应用。例如
helm upgrade <release-name> <chart-name>/<new-version>  
helm rollback <release-name> <revision>  
helm delete <release-name>

        这些命令允许你根据需要对应用进行版本控制和更新管理。

        通过安装和配置Helm,你可以方便地部署和管理Kubernetes应用,简化了应用的版本控制、打包、发布、删除和更新等操作。

        想了解更多,感兴趣的小伙伴可以关注我的公众号:JTY的打工日记

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

未来之星姜大帅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值