【使用kubeadm安装部署K8S】

2023-11-09

问题:使用kubeadm安装部署K8S

该篇文章介绍利用kubeadm进行安装部署K8S

方法:

1. 准备环境

软件环境:

软件 版本
操作系统 CentOS7.9_x64 (mini)
Docker 19-ce
Kubernetes 1.20

服务器规划:

角色 IP
k8s-master 192.168.124.129
k8s-node1 192.168.124.130
k8s-node2 192.168.124.131

硬件要求:

角色 CPU 内存 硬盘
master 2核 4G 20G
node 4核 8G 20G

架构图:
在这里插入图片描述

2. 操作系统初始化配置【除了2.5只在master操作,其他步骤每台虚拟机都要操作】

2.1 关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
2.2 关闭selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时
2.3 关闭swap:
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
2.4 根据规划设置主机名:
hostnamectl set-hostname <hostname>
bash
2.5 在master添加hosts:
 vim /etc/hosts

192.168.124.129 master-k8s
192.168.124.130 node1-k8s
192.168.124.131 node2-k8s
或者

cat >> /etc/hosts << EOF
192.168.124.129 master_k8s
192.168.124.130 node1_k8s
192.168.124.131 node2_k8s
EOF
2.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  # 生效
2.7 时间同步:
yum install ntpdate -y
ntpdate time.windows.com

3. 安装Docker/kubeadm/kubelet【所有节点】

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

配置镜像下载加速器:

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

systemctl restart docker
docker info
3.2 添加阿里云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
3.3 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

yum install -y kubeadm-1.20.0 kubelet-1.20.0 kubectl-1.20.0
systemctl enable kubelet

4. 部署Kubernetes Master

4.1 在192.168.124.129(Master)执行:
kubeadm init \
  --apiserver-advertise-address=192.168.124.129 \
  --kubernetes-version v1.20.0 \
  --image-repository registry.aliyuncs.com/google_containers \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all

• --apiserver-advertise-address 集群通告地址
• --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。可以魔法上网,不用配。如果不能,可以配置:
• --kubernetes-version K8s版本,与上面安装的一致
• --service-cidr 集群内部虚拟网络,Pod统一访问入口
• --pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致

或者使用配置文件引导:

vi kubeadm.conf
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
imageRepository: registry.aliyuncs.com/google_containers 
networking:
  podSubnet: 10.244.0.0/16 
  serviceSubnet: 10.96.0.0/12 
kubeadm init --config kubeadm.conf --ignore-preflight-errors=all
4.2 初始化完成后,最后会输出一个join命令,先记住,下面用。

例如:

kubeadm join 192.168.124.129:6443 --token 0kc7co.tyz7u44w4eoenip9 \
    --discovery-token-ca-cert-hash sha256:615f82948aac7cd18d0dfbfec64c5f983f815e9814c995eefbe06471ec0211f3
4.3 拷贝kubectl使用的连接k8s认证文件到默认路径:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4.4 查看工作节点:
kubectl get nodes
NAME               STATUS     ROLES            AGE   VERSION
localhost.localdomain   NotReady   control-plane,master   20s   v1.20.0

注:由于网络插件还没有部署,还没有准备就绪 NotReady

5. 加入Kubernetes Node

在192.168.124.130/131(Node)执行:
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

kubeadm join 192.168.124.129:6443 --token 0kc7co.tyz7u44w4eoenip9 \
    --discovery-token-ca-cert-hash sha256:615f82948aac7cd18d0dfbfec64c5f983f815e9814c995eefbe06471ec0211f3

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,可以直接使用命令快捷生成:

kubeadm token create --print-join-command

6. 部署容器网络(CNI) 安装Pod网络

Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案。

6.1 下载YAML:
wget https://docs.projectcalico.org/manifests/calico.yaml
6.2 下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定的一样。

修改完后文件后,部署:

kubectl apply -f calico.yaml
kubectl get pods -n kube-system
6.3 等Calico Pod都Running,节点也会准备就绪。

7. 测试kubernetes集群

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

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc # 会显示访问port

访问地址:http://MasterIP:Port,如果可以访问nginx,说明就安装部署完成了。

8. 部署 Dashboard

Dashboard是官方提供的一个UI,可用于基本管理K8s资源:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:

vim recommended.yaml
...
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort  # 添加改行即可
...
kubectl apply -f recommended.yaml
kubectl get pods -n kubernetes-dashboard 

参看容器的端口:例如kubernetes-dashboard:

kubectl get pods,svc -n kubernetes-dashboard # 会暴露port

访问地址:https://192.168.124.129:31623 :
创建service account并绑定默认cluster-admin管理员集群角色:

# 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

使用输出的token登录Dashboard:
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【使用kubeadm安装部署K8S】 的相关文章

随机推荐

  • 病例对照研究中,如何对年龄、性别、教育程度进行频数匹配?

    病例对照研究中 如何对年龄性别进行频数匹配 案例一 两组被试匹配 案例二 三组被试匹配 背景 使用默认匹配方法 衡量匹配效果 调整参数 其他匹配方法 参考 案例一 两组被试匹配 案例二 三组被试匹配 背景 我经常遇到的数据情形是 有两组被试
  • 实现【企业微信自建应用使用uni-app H5 开发】,并解决【uni-app集成微信JSSDK(wx、jWeixin)变量冲突问题】

    目录 企业微信的开发与调试 企业微信应用主体逻辑 登录 构造网页授权链接 企业微信SDK配置 demo案例 重要bug修复方法 总结 企业微信的开发与调试 在本地开发基础代码和UI 发布到测试环境进行测试 无法本地调试接口 因为web浏览器
  • AltiumDesigner15.1导出3D PDF 图文教程

    ALtiumDesigner更新的速度就一个字 快 不过从15 4 15出来 貌似很久都没有更新了 等了很久 今天终于出来了 O O哈哈 因为早就耳闻AD15 1会带有3D输出功能 能够直接输出到PDF 这个好玩的功能 怎么能错过 本文就是
  • 时序基本介绍——Jitter与Skew区别

    在时序分析当中 有些基础概念还是要认真了解的 时钟抖动 Clock Jitter 和时钟偏移 Clock Skew 经常容易混淆 时序设计中 对于时钟的要求是非常严格的 因此FPGA中也有专用的时钟管脚 对应着专用的时钟区域BUFG BUF
  • 技术工具类:IDEA集成SonarQube并使用

    1 安装插件 从 File gt Settings gt Plugins 搜索 sonar 如下图 直接点击安装即可 安装成功后重启IDEA 在Settings gt Tools 中找到 SonarLint 如下图 在Coniguratio
  • uni-app提供开箱即用的SSR支持

    SSR 服务端渲染 可以给SPA站点带来两大核心优势 更好的SEO 更快的首屏渲染 很多uni app开发者都在积极尝试SSR 但大多没入门就放弃了 原因在于SSR颇高的技术门槛 vue js 官网在介绍 SSR 章节时的描述如下 本指南将
  • Python pycharm(windows版本)部署spark环境

    一 部署本地spark环境 1 1 安装好JDK 下载并安装好jdk1 7 配置完环境变量 1 2 Spark环境变量配置 去http spark apache org downloads html网站下载相应hadoop对应的版本 我下载
  • GD32 ADC检测电压

    GD32 ADC检测电压 https blog csdn net yangkunhenry article details 112757855 GD32的参考电压在规格书上没有查到 但是由于GD32 和STM32的 某种关系 STM32 的
  • 基本农田卫星地图查询_谷歌地图 最新版v7.3.0

    谷歌地图整合Google的本地搜索以及驾车指南两项服务 能够鸟瞰世界 将取代目前桌面搜索软件 谷歌地图可在虚拟世界中如同一只雄鹰在大峡谷中自由飞翔 登陆峡谷顶峰 潜入峡谷深渊 谷歌地图使用界面 相关软件 版本说明 下载地址 谷歌卫星地图下载
  • 感受了一下myspace

    今天去 www myspace com 看了看 感觉还可以 这里是年轻人交流的一个平台 可以了解当前世界年轻的喜好 他们做什么 有想些什么 可以和自己对比 把握时代信息 我觉得还是有点必要 就想当初我进入 天涯 时一样 希望从中能学到一些东
  • qt opengl 加载3d模型(obj格式)

    和一般c 程序加载3d模型一样 解读出数据内容 再用一个常规的着色程序就可以了 我实现的效果如下 采用的免费模型 实现思路和前面的略有不同 就是把自己生成顶点 纹理 法线的过程变成从文件读取了 我的obj文件如下 mtllib C User
  • 征服面试官:RxJava 原理篇 掌握这篇面试题汇总,吊打面试官!

    1 RxJava 如何实现线程切换 subscribeOn 是通过新建 Observable 的方式 使用 OnSubscribe 类的方式去做到线程切换的 observeOn 是通过 operator 操作符的形式去完成线程切换的 所以他
  • C++ 函数模板和类模板--泛型编程

    所谓函数模板 实际上是建立一个通用函数 其函数类型和形参类型不具体指定 用一个虚拟的类型来代表 这个通用函数就称为函数模板 凡是函数体相同的函数都可以用这个模板来代替 不必定义多个函数 只需在模板中定义一次即可 一 函数模板初识 1 为什么
  • java基础知识点

    作者简介 哪吒 CSDN2022博客之星Top1 CSDN2021博客之星Top2 多届新星计划导师 博客专家 专注Java硬核干货分享 立志做到Java赛道全网Top N 本文收录于 Java基础教程系列 目前已经700 订阅 CSDN最
  • Java JDK11快速下载地址

    Linux deb 地址一 deb 地址二 rpm 地址一 rpm 地址二 tar gz 地址一 tar gz 地址二 MacOS dmg 地址一 dmg 地址二 tar gz 地址一 tar gz 地址二 Windows exe 地址一
  • Android studio导入图片出现下划红线怎么破

    首先 Android studio的图片命名需要全部字母小写 其次 导入的话 复制文件paste到drawable就可以 红线不是导入操作的问题
  • Vue的监视属性watch、深度监视以及监视的简写

    一 两种监视方式 1 watch属性直接监视 如果刚开始确定监视对象 在vue中可以直接使用watch属性实现监视 watch 正常写法 Info immediate true handler newValue oldValue conso
  • 栈、队列的基本概念和操作

    目录 一 栈 stack 了解 1 1 栈的实现和操作 二 队列 queue 了解 2 1 队列的实现与操作 2 2 双端队列 一 栈 stack 了解 概念 栈 stack 有些地方称为堆栈 是一种容器 可存入数据元素 访问元素 删除元素
  • hive指定字段插入数据,包含了分区表和非分区表

    1 建表 语句如下 CREATE EXTERNAL TABLE ods lineitem full l shipdate date l orderkey bigint l linenumber int l partkey int l sup
  • 【使用kubeadm安装部署K8S】

    问题 使用kubeadm安装部署K8S 该篇文章介绍利用kubeadm进行安装部署K8S 方法 1 准备环境 软件环境 软件 版本 操作系统 CentOS7 9 x64 mini Docker 19 ce Kubernetes 1 20 服