kubeadm安装kubernetes集群

简介: kubeadm安装kubernetes集群

一、搭建k8s集群

1.1搭建k8s集群部署方式

1.1.1目前生产部署 Kubernetes 集群主要有两种方式:

(1bubeam

Kubeadm 是一个 K8s 部署工具,提供 kubeadm init kubeadm join,用于快速部署

Kubernetes 集群。

官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

(2)二进制包

github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群

Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用

二进制包部署 Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期

维护。

1.2bubeadm前置部署

kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具,这个工具能通过两条指

令完成一个 kubernetes 集群的部署:

第一、创建一个 Master 节点 kubeadm init

第二, 将 Node 节点加入到当前集群中 $ kubeadm join<Master 节点的 IP 和端口 >

1.2.1安装要求

在开始之前,部署 Kubernetes 集群机器需要满足以下几个条件:

一台或多台机器,操作系统 CentOS7.x-86_x64

硬件配置:2GB 或更多 RAM2 CPU 或更多 CPU,硬盘 30GB 或更多

集群中所有机器之间网络互通

可以访问外网,需要拉取镜像

禁止 swap 分区


1.2.2准备环境image.png

1.2.3安装基本服务

yum install wget vim epel-release ntpdate conntrack ntp ipvsadm ipset jq
iptables curl sysstat libseccomp -y

1.2.4 系统初始化

(1)关闭防火墙并设置开机不自启

systemctl stop firewalld && systemctl disable firewalld

(2)关闭selinux服务

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #永久关闭
selinux
setenforce 0 #临时关闭selinux

(3)关闭swap

swapoff -a #临时关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭swap

(4)设置主机名

hostnamectl set-hostname <hostname> #根据规划设置

(5)添加映射

cat >> /etc/hosts << EOF
192.168.75.55 k8smaster
192.168.75.56 k8s-node
EOF

(6)将桥接的IPV4流量传递到iptables的链:

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #使其生效

1.3 所以节点安装 Dockerkubeadmkubelet

Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装 Docker

1.3.1 安装docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O
/etc/yum.repos.d/docker-ce.repo
yum install docker-ce-19.03.11 -y
systemctl start docker && systemctl enable docker
docker --version

1.3.2配置docker镜像加速

mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

1.3.3添加yum

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
yum clean all && yum makecache

1.3.4安装kubeadmkubelet kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.1 kubectl-1.18.1
systemctl enable kubelet

1.4 部署kubernetes Master

192.168.75.110Master)执行。

kubeadm init --apiserver-advertise-address=192.168.75.10 --image-repository
registry.aliyuncs.com/google_containers --kubernetes-version v1.18.1 --servicecidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

1.4.1完成后根据提示完成操作

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes #查看node节点

1.4.2 加入Kubernetes Node

192.168.75.111/112node)执行。

向集群添加新节点,执行Kubeadm init输出的kubeadm Join命令:(根据结尾自己的命令

kubeadm join 192.168.75.110:6443 --token twjnag.eqlezwll77deahjz \
--discovery-token-ca-cert-hash
sha256:8402d0e19ba5cf7e75f4b32086cb63b6f0f5c328ee5168af5cded77a0b7a4f37

完成后可以使用以下命令查看是否加入成功:

默认token有效期为24小时,当过期后,该token就不可用了。这时就需要重新创建token,操作如下:

kubeadm token create --print-join-command

1.4.3部署CNI网络插件

kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
kubectl get pods -n kube-system #查看运行状况

如果无法访问外网则访问下面的地址,下载到本地再传到服务器

https://www.aliyundrive.com/s/2VFpYQizPXe

传入后执行以下命令:

kubectl apply -f kube-flannel.yaml

查看运行状况

[root@master ~]# kubectl get pod -n kube-flannel
NAME READY STATUS RESTARTS AGE
kube-flannel-ds-njn4c 1/1 Running 0 3m49s
kube-flannel-ds-wht29 1/1 Running 0 3m49s

1.4.4测试kubernetes集群

Kubernetes集群中创建一个pod,验证是否正常运行:

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

测试:http://NodeIP:port/

image.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
16天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
13天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
61 12
|
26天前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
270 10
|
18天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
36 2
|
30天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
2月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
83 1
|
3月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
3月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
3月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
153 17