【k8s】如何搭建搭建k8s服务器集群(Kubernetes)(一)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
云防火墙,500元 1000GB
简介: 【k8s】如何搭建搭建k8s服务器集群(Kubernetes)

前言:

kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。


服务器环境


在所有节点上安装Docker和kubeadm

部署Kubernetes Master

部署容器网络插件

部署 Kubernetes Node,将节点加入Kubernetes集群中


搭建一主四从集群

服务器列表:

服务器类型 IP地址


master 192.168.0.185

node-1 192.168.0.56

node-2 192.168.0.230

Node-3 192.168.0.161

一、前期准备(所有节点)


1.1所有节点,关闭防火墙规则,关闭selinux,关闭swap交换,打通所有服务器网络,进行ping测试

全部的服务器都执行以下服务器


1.1.1关闭防火墙

systemctl stop firewalld     
#关闭防火墙
systemctl disable firewalld  
#禁止防火墙启动

1.1.2关闭selinux增强机制

setenforce 0  
#关闭selinux
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果

1.1.3配置iptables的ACCEPT规则

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

1.1.4关闭swap

swapoff -a   
#交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab   
#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果

1.2所有节点,修改各个主机名,并写入所有服务器的hosts中

hostnamectl set-hostname master  
#修改主机名
hostnamectl set-hostname node-1
hostnamectl set-hostname node-2
hostnamectl set-hostname node-3
bash   
#每个节点修改完后记得刷新重启加载


1.2.1给hosts文件,并增加ip映射

cat >> /etc/hosts << EOF 
192.168.0.185 master 
192.168.0.56 node-1 
192.168.0.230 node-2 
192.168.0.193 node-3 
EOF
#这里ip必须和前面修改的主机名一致

1.3所有节点,设置系统参数,调整内核参数,将桥接的 IPV4 流量传递到 iptables 链

#调整内核参数


cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF
sysctl --system  #加载参数

1.4所有节点,安装Docker

1.4.1安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2 #安装依赖

1.4.2设置镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum-config-manager命令——管理软件仓库--add-repo=<软件仓库从指定文件或URL添加(和启用)软件仓库这就是添加一个docker镜像源

1.4.3安装docker

yum install -y docker-ce docker-ce-cli containerd.io
#安装docker
1
2

1.4.4设置系统管理docker命令

mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF
#使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。
#日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。

1.4.5重新加载服务配置文件,并启动docker

systemctl daemon-reload

#重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载上方已经让docker归属systemctl管理了。


systemctl restart docker.service
#重启docker
systemctl enable docker.service 
#设置开机自启
docker info | grep "Cgroup Driver"
#显示Cgroup Driver: system为正确

1.5所有节点,配置k8s镜像源

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
#定义kubernetes源


1.6所有节点安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3


systemctl enable kubelet.service  #开机自启kubelet


systemctl start kubelet.service #启动


#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1天前
|
Kubernetes Cloud Native Ubuntu
云原生之旅:Kubernetes集群搭建与应用部署
【8月更文挑战第65天】本文将带你进入云原生的世界,通过一步步指导如何在本地环境中搭建Kubernetes集群,并部署一个简单的应用。我们将使用Minikube和Docker作为工具,探索云原生技术的魅力所在。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和实践技巧。
|
5天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
1月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
181 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
16天前
|
存储 Kubernetes 负载均衡
深入浅出 Kubernetes:掌握容器编排的艺术
在云计算迅速发展的今天,Kubernetes 作为容器编排和管理的事实标准,提供了运行分布式系统的强大框架,支持无缝部署、扩展和管理容器化应用。本文深入探讨 Kubernetes 的核心概念与组件,介绍其自动化部署、负载均衡、存储编排等特性,并演示如何使用 Minikube、kubeadm 及 Kubernetes 服务提供商部署集群,通过 `kubectl` 和 Helm 管理资源,帮助开发者掌握这一关键技术。
|
22天前
|
存储 Kubernetes 持续交付
深入浅出 Kubernetes:掌握容器编排的艺术
Kubernetes作为容器编排领域的领头羊,提供了运行分布式系统的强大框架,支持自动化部署、扩展和管理容器化应用。本文深入浅出地介绍了Kubernetes的核心概念与关键组件,包括服务发现、存储编排及自动部署等特性。通过Minikube、kubeadm及云服务商等多种方式部署集群,并使用`kubectl`、YAML配置文件和Helm进行资源管理。掌握Kubernetes将成为软件开发者的宝贵技能。
|
1月前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
50 7
|
1月前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
32 5
|
2月前
|
存储 Kubernetes Go
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
|
1月前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
53 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
1月前
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
49 2
下一篇
无影云桌面