安装部署Kubernetes集群

简介: 本文主要分三大部分,他们分别是系统初始化、安装docker、安装Kubernetes,测试验证与删库跑路

系统初始化


请注意后面的单词all,代表所有(master、node)


Master:仅在master上


node: 仅在node上


关闭防火墙(`all`)


1## 临时关闭
2systemctl stop firewalld
3## 永久关闭
4systemctl disable firewalld
5## 验证防火墙是否关闭
6systemctl status firewalld


效果如下


640 (1).jpg


关闭selinux(`all`)


1# 临时关闭
2setenforce 0
3# 永久
4sed -i 's/enforcing/disabled/' /etc/selinux/config


关闭swap(`all`)


1# 临时
2swapoff -a 
3# 永久
4sed  -ri 's/.*swap.*/#&/' /etc/fstab
5
6# 一条命令完成所有
7systemctl stop firewalld && setenforce 0 && swapoff -a && systemctl status firewalld


设置主机名称(`all`)


1# 设置名称(k8s-m-1)忽略大写字母
2hostnamectl set-hostname master
3# 验证
4hostname


时间同步(`All`)


1yum install -y ntpdate  && ntpdate time.windows.com


在`Master`添加Hostname(`master`)


1# 设置
 2cat >> /etc/hosts << EOF
 3masterIp master
 4node1Ip node1
 5node2Ip node2
 6EOF
 7
 8# example
 9cat >> /etc/hosts << EOF
10192.168.50.182     master
11192.168.50.252   node
12EOF


验证,此时ping node, 看是否能ping通


640 (2).jpg


将桥接的IPV4 流量传递到iptables的链(`all`)


1cat > /etc/sysctl.d/k8s.conf << EOF
2net.bridge.bridge-nf-call-ip6tables = 1
3net.bridge.bridge-nf-call-ip6tables = 1
4EOF
5
6# 生效
7sysctl --system


安装Docker


删除docker(可选)


1# You can use scripts for one click installation,You may need to type enter at the end
 2# remove docker 
 3sudo yum remove docker \
 4                  docker-client \
 5                  docker-client-latest \
 6                  docker-common \
 7                  docker-latest \
 8                  docker-latest-logrotate \
 9                  docker-logrotate \
10                  docker-engine
11# Set up repository
12sudo yum install -y yum-utils
13wget https:/mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
14yum -y install docker-18.06.1.ce-3.e17


安装docker


1# Use Aliyun Docker
 2sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 3# install docker from yum
 4yum install  -y docker-ce docker-ce-cli containerd.io
 5# cat version 
 6docker --version
 7
 8# 配置镜像加速
 9sudo mkdir -p /etc/docker
10sudo tee /etc/docker/daemon.json <<-'EOF'
11{
12  "registry-mirrors": ["https://etdea28s.mirror.aliyuncs.com"]
13}
14EOF
15
16# reload
17sudo systemctl daemon-reload
18# 配置开启自启
19sudo systemctl enable docker
20# start docker
21systemctl restart docker


验证docker镜像加速


在终端上输入docker info,效果图如下


640 (3).jpg


完成~


安装Kubernetes


配置阿里镜像源(all)


1cat > /etc/yum.repos.d/kubernetes.repo <<EOF
2[kubernetes]
3name=Kubernetes
4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
5enabled=1
6gpgcheck=0
7repo_gpgcheck=1
8gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
9EOF


安装 kubectl kubelet kubeadm(`all`)


1# install kubectl kubelet kubeadm
2yum install -y kubectl kubelet kubeadm --disableexcludes=kubernetes
3#--disableexcludes=kubernetes  禁掉除了这个之外的别的仓库
4# set boot on opening computer
5systemctl enable kubelet


kubeadm初始化(`Master`)


1kubeadm init \
 2--apiserver-advertise-address=masterIp   \
 3--image-repository registry.aliyuncs.com/google_containers  \
 4--service-cidr=10.10.0.0/16 \
 5--pod-network-cidr=10.122.0.0/16
 6
 7# eg  
 8kubeadm init \
 9--apiserver-advertise-address=192.168.50.182   \
10--image-repository registry.aliyuncs.com/google_containers  \
11--service-cidr=10.96.0.0/12 \
12--pod-network-cidr=10.244.0.0/16


如果没有Error,即kubeadm开始初始化成功


640 (4).jpg


等上几分钟,初始化成功,如下图


640 (5).jpg


开启集群(master)


1mkdir -p $HOME/.kube
2sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3sudo chown $(id -u):$(id -g) $HOME/.kube/config
4
5# 验证
6kubectl get node
7# 正常打印出信息即,成功


节点加入集群(node)


1# 例如
2kubeadm join 192.168.50.182:6443 --token 7t70cl.hr22v89g7wkqojdf \
3    --discovery-token-ca-cert-hash sha256:d0541c10506744981838a7d4ce504eb69d28fdcfc8e1261373505c42047be33f


这个是初始化完成后,系统给的。请以自己输出为准


1# 默认token24hour后过期,获取新token命令如下:
2kubeadm token create --print-join-command


部署CNI网络组件


1# 由于是国外的源,国内无法访问。我们需要添加镜像,若存在,则忽略
2echo "199.232.28.133 raw.githubusercontent.com" >> /etc/hosts
3
4# 部署CNI网络组件
5kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml


1# 开启IPVS,修改ConfigMap的kube-system/kube-proxy中的模式为ipvs
2kubectl edit cm kube-proxy -n kube-system 
3# 将空的data -> ipvs -> mode中替换如下
4mode: "ipvs"


640 (6).jpg


此时已经全部就绪了,如下


640 (7).jpg


验证测试


1# kubectl create deployment NAME --image=image -- [COMMAND] [args...] [options]
2# 简单部署nginx
3kubectl create deployment nginx --image=nginx
4# 对外暴露端口
5kubectl expose deployment nginx --port=80 --type=NodePort
6# 查看状态
7kubectl get pod,svc
8# 查看命名空间
9kubectl get all -n kube-system


部署成功示意图


640 (8).jpg


向外暴露随机端口


640 (9).jpg


访问集群中任意一个ip


640 (10).jpg


完成~


补充,删除部署的服务


1kubectl get deployment 
2# 我们只需要删除对应的deploy 即可
3kubectl delete deployment nginx


640 (11).jpg


删除成功后,已经找不到nginx的影子,完成


640 (12).jpg


总结


本节我们对使用kubeadm工具快速搭建搭建了Kubernetes的集群,系统初始化,记得关闭防火墙、分区等哦。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3天前
|
存储 运维 Kubernetes
Kubernetes 集群的监控与维护策略
【4月更文挑战第23天】 在微服务架构日益盛行的当下,容器编排工具如 Kubernetes 成为了运维工作的重要环节。然而,随着集群规模的增长和复杂性的提升,如何确保 Kubernetes 集群的高效稳定运行成为了一大挑战。本文将深入探讨 Kubernetes 集群的监控要点、常见问题及解决方案,并提出一系列切实可行的维护策略,旨在帮助运维人员有效管理和维护 Kubernetes 环境,保障服务的持续可用性和性能优化。
|
5天前
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化实践
【4月更文挑战第22天】在动态且复杂的微服务架构中,确保 Kubernetes 集群的高性能运行是至关重要的。本文将深入探讨针对 Kubernetes 集群性能优化的策略与实践,从节点资源配置、网络优化到应用部署模式等多个维度展开,旨在为运维工程师提供一套系统的性能调优方法论。通过实际案例分析与经验总结,读者可以掌握持续优化 Kubernetes 集群性能的有效手段,以适应不断变化的业务需求和技术挑战。
17 4
|
23天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
17 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
12天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
58 17
|
25天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
18 0
|
26天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
108 0
|
1月前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
219 0
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
27 0
|
1月前
|
存储 Kubernetes 监控
Kubernetes(k8s)集群健康检查常用的五种指标
Kubernetes(k8s)集群健康检查常用的五种指标
112 1
|
1月前
|
Kubernetes Cloud Native Devops
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
51 1