当前位置: 首页 > news >正文

Kubernetes入门教程 --- 使用kubeadm进行集群安装

在这里插入图片描述

Kubernetes入门教程 --- 使用kubeadm和二进制安装

    • 1. Introduction
      • 1.1 架构图
      • 1.2 关键字介绍
      • 1.3 简述
    • 2. 使用Kubeadm Install
      • 2.1 申请三个虚拟环境
      • 2.2 准备安装环境
      • 2.3 配置yum源
      • 2.4 安装Docker
      • 2.5 时间同步
      • 2.6 安装组件
      • 2.7 部署集群
      • 2.8 Master安装网络插卡
    • 3. 查询状态
      • 3.1 查询node节点
      • 3.2 查询pod
      • 3.3 测试集群
      • 3.4 部署Dashboard
      • 3.5 创建用户
    • 4. Version1.18特性
      • 4.1 Debug
      • 4.2 Sidecar
      • 4.3 Volumn
      • 4.4 ConfigMap/Secret
    • 5. Error
    • 6. Awakening


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


1. Introduction

1.1 架构图

  • 架构图
    左面的master架构
    右边是node架构在这里插入图片描述

1.2 关键字介绍

  • 关键字介绍
    kubectl:命令行工具
    Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器
    controller:负责维护集群的状态,比如副本期望数量、故障检测、自动扩展、滚动更新等
    api server:所有服务访问的唯一入口,提供认证、授权、访问控制、API 注册和发现等机制
    scheduler:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
    etcd:键值对数据库,保存了整个集群的状态,官方将它定义成一个可信赖的分布式键值存储服务
    kubelet:负责维护容器的生命周期,同时也负责 Volume 和网络的管理
    kube-proxy:负责为 Service 提供 cluster 内部的服务发现和负载均衡
    Container runtime:负责镜像管理以及 Pod 和容器的真正运行
    label:标签,用于对pod进行分类,同一类pod会拥有相同的标签
    NameSpace:命名空间,用来隔离pod的运行环境

1.3 简述

  • kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
    1.创建一个 Master 节点:kubeadm init
    2.将一个 Node 节点加入到当前集群中:ubeadm join <Master节点的IP和端口

2. 使用Kubeadm Install

2.1 申请三个虚拟环境

序号ip节点类型
110.136.217.11master
210.136.217.12mode
310.136.217.13node

2.2 准备安装环境

  • 1.关闭selinux
    vim /etc/selinux/config
    添加 SELIUNX=disabled
    并将其他两行注释掉在这里插入图片描述
  • 永久关闭selinux
    sed -i ‘s/enforcing/disabled/’ /etc/selinux/config
  • 2.临时关闭swap内存
    swapoff -a
  • 3.永久关闭swap内存
    vim /etc/fstab
    swapoff -a
#永久关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
  • 设置host,在master节点
    vim /etc/hosts
    在这里插入图片描述
  • 调整内核参数
    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
    在这里插入图片描述

2.3 配置yum源

  • 配置源文件
    vim /etc/yum.repos.d/kubernetes.repo
    在这里插入图片描述
[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/kube

2.4 安装Docker

  • 安装wget
    yum install -y wget
  • 配置docker源
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 安装docker
    yum -y install docker-ce-18.06.1.ce-3.el7
  • 开机启动docker
    systemctl enable docker && systemctl start docker
  • 查看docker版本
    docker --version
  • 守护进程重启
    systemctl daemon-reload
    systemctl start docker
  • 避免每次使用docker都要sudo
    sudo usermod -aG docker xxxxx

2.5 时间同步

  • 安装组件
    yum install ntpdate -y
  • 时间同步
    ntpdate http://time.windows.com

2.6 安装组件

  • 安装
    yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
  • 开机启动
    systemctl enable kubelet && systemctl start kubelet
    在这里插入图片描述
  • kubelet命令补全
    echo “source <(kubectl completion bash)” >> ~/.bash_profile
    source ~/.bash_profile

2.7 部署集群

  • 查看需要的镜像
    kubeadm config images list
    在这里插入图片描述
  • 上传 kubeadm-basic.images.tar.gz 压缩包至 /opt 目录
    tar zxvf kubeadm-basic.images.tar.gz
    在这里插入图片描述
  • for循环安装
    for i in $(ls /opt/kubeadm-basic.images/*.tar); do docker load -i $i; done
    在这里插入图片描述
  • 复制镜像都其他节点
    scp -r kubeadm-basic.images root@nodehostname:/opt
    在这里插入图片描述
  • 在其他节点for循环安装
    for i in $(ls /opt/kubeadm-basic.images/*.tar); do docker load -i $i; done
  • 初始化kubeadm(方法一)
    kubeadm config print init-defaults > /opt/kubeadm-config.yaml
    cd opt
    vim kubeadm-config.yaml
vim kubeadm-config.yaml
......
localAPIEndpoint:
advertiseAddress: 192.168.229.90 #指定master节点的IP地址
bindPort: 6443
......
kubernetesVersion: v1.15.1   #指定kubernetes版本号
networking:
dnsDomain: cluster.local
podSubnet: "10.244.0.0/16"   #指定pod网段,10.244.0.0/16用于匹配flannel默认网段
serviceSubnet: 10.96.0.0/16  #指定service网段
scheduler: {}
--- #末尾再添加以下内容
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs  #把默认的service调度方式改为ipvs模式
  • 初始化
    kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
    在这里插入图片描述
  • 证书目录
    ls /etc/kubernetes/pki
    在这里插入图片描述
  • 初始化kubeadm(方法二)
    kubeadm init --apiserver-advertise-address=0.0.0.0 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.15.1 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
  • 参数详解
    1.apiserver-advertise-address:apiserver通告给其他组件的IP地址,一般应该为Master节点的用于集群内部通信的IP地址,0.0.0.0表示节点上所有可用地址
    2.apiserver-bind-port:apiserver的监听端口,默认是6443
    3.cert-dir:通讯的ssl证书文件,默认/etc/kubernetes/pki
    4.control-plane-endpoint:控制台平面的共享终端,可以是负载均衡的ip地址或者dns域名,高可用集群时需要添加
    5.image-repository:拉取镜像的镜像仓库,默认是k8s.gcr.io
    6.kubernetes-version:指定kubernetes版本
    7.pod-network-cidr:pod资源的网段,需与pod网络插件的值设置一致。通常,Flannel网络插件的默认为10.244.0.0/16,Calico插件的默认值为192.168.0.0/16;
    8.service-cidr:service资源的网段
    9.service-dns-domain:service全域名的后缀,默认是cluster.local
  • 修改 kube-proxy 的 configmap,开启 ipvs
    kubectl edit cm kube-proxy -n=kube-system
    mode: ipvs
  • 设定kubectl
    在这里插入图片描述
  • node 节点上执行 kubeadm join 命令加入群集
    kubeadm join 192.168.2.66:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:aeeaa0e74c0854944d152aaf29f7b2f10863fc05a8dc1d73a7687b04bfde9e75
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

2.8 Master安装网络插卡

  • master上安装calico.yaml,解决STATUS notReady
    wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml --no-check-certificate
  • 编辑calico.yaml
    将pod cidr => 192.168.0.0/16 改为 10.244.0.0/16
  • 应用
    kubectl apply -f calico.yaml

3. 查询状态

3.1 查询node节点

  • kubectl get nodes
    在这里插入图片描述

3.2 查询pod

  • 查询所有pod
    kubectl get pods --namespace=kube-system
    在这里插入图片描述
  • 查询具体pod
    kubectl --namespace=kube-system describe pod podname
    在这里插入图片描述
  • 查询k8s版本
    kubectl version
    在这里插入图片描述

3.3 测试集群

  • 在集群创建pod
    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
  • 查看状态
    kubectl get pods
    kubectl get svc

3.4 部署Dashboard

  • 下载
    wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
  • 修改Service为NodePort类型
    vim recommended.yaml
    在这里插入图片描述
  • 设定
    kubectl apply -f recommended.yaml
    kubectl get pods -n kubernetes-dashboard
    在这里插入图片描述
  • 访问
    https://NodeIP:30001

3.5 创建用户

  • 创建用户
    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}’)
    在这里插入图片描述
    在这里插入图片描述

4. Version1.18特性

4.1 Debug

4.2 Sidecar

4.3 Volumn

4.4 ConfigMap/Secret

5. Error

  • The connection to the server localhost:8080 was refused - did you specify the right host or port?
    1.编辑
    vim /etc/profile
    添加 => export KUBECONFIG=/etc/kubernetes/admin.conf
    2.更新
    source /etc/profile

6. Awakening

         在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。
在这里插入图片描述

相关文章:

Kubernetes入门教程 --- 使用kubeadm进行集群安装

Kubernetes入门教程 --- 使用kubeadm和二进制安装1. Introduction1.1 架构图1.2 关键字介绍1.3 简述2. 使用Kubeadm Install2.1 申请三个虚拟环境2.2 准备安装环境2.3 配置yum源2.4 安装Docker2.5 时间同步2.6 安装组件2.7 部署集群2.8 Master安装网络插卡3. 查询状态3.1 查询n…...

华为OD机试真题Python实现【相对开音节】真题+解题思路+代码(20222023)

相对开音节 题目 相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外) 常见的单词有bike cake 给定一个字符串,以空格为分隔符 反转每个单词的字母 若单词中包含如数字等其他非字母时不进行反转 反转后计算其中含有相对开音节结构的子串个数 (连续子串中部分字符可以重复) …...

海思SD3403/SS928V100开发(5)MIPI_YUV相机vio sample开发----修改思路

1. 前言 sensor输出格式: YUV422 8bit 硬件连接: MIPI_YUV相机(4lane MIPI) -> SS928V100 MIPI0(4lane) 框图: 2. 几个问题 基于SS928 SDK中的 vio sample修改; 但是sample里面都是基于RAW RGB sensor开发的sample, 没有现成的MIPI_YUV sensor的参考,需要自己…...

javaee之node.js与es6

问题1&#xff1a;在IDEA控制台为什么node显示不会出来命令 修改完之后记得重新启动电脑 问题2&#xff1a;response.end()作用 在Web开发中&#xff0c;浏览器端的请求到达服务器进行处理的时候&#xff0c;Response.End的作用就是让request执行到此结束&#xff0c;输出到客户…...

11 nacos源码开篇

nacos核心功能点&#xff1a; 服务注册&#xff1a;Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务&#xff0c;提供自身的元数据&#xff0c;比如ip地址、端口等信息。Nacos Server接收到注册请求后&#xff0c;就会把这些元数据信息存储在一个双层的内存…...

13.Jenkins集成sonarqube

Jenkins集成sonarqube1.jenkins集成sonarqube2.jenkins以maven的方式集成sonarqube scanner报错1报错21.jenkins集成sonarqube 1.在jenkins插件管理中安装sonarqube scanner 2.jenkins要知道sonarqube服务端是谁&#xff0c;需要配置&#xff08;系统管理–系统配置–sonarq…...

JavaWeb13-线程休眠和指定唤醒:LockSupport

目录 1.LockSupport.park()&#xff1a;休眠当前线程 2.LockSupport.unpark(线程对象)&#xff1a;唤醒某一个指定的线程 3.扩展&#xff1a;LockSupport.parkUntil(long)等待最大时间是一个固定时间 4.LockSupport和Interrupt 5.LockSupport VS wait 相同点&#xff1a;…...

【第一章:Spring概述、特点、IOC容器、IOC操作bean管理(基于xml方式创建对象,注入属性)】

第一章&#xff1a;Spring概述、特点、IOC容器、IOC操作bean管理&#xff08;基于xml方式创建对象&#xff0c;注入属性&#xff09; 1.Spring是什么&#xff1f; ①Spring是一款主流的java EE 轻量级开源框架。 ②广义的Spring&#xff1a;Spring技术栈&#xff0c;Spring不再…...

前端react面试题(边面边更)

展示组件(Presentational component)和容器组件(Container component)之间有何不同 展示组件关心组件看起来是什么。展示专门通过 props 接受数据和回调&#xff0c;并且几乎不会有自身的状态&#xff0c;但当展示组件拥有自身的状态时&#xff0c;通常也只关心 UI 状态而不是…...

产品3C认证在哪里办理

​一、什么是CCC认证 3C认证的全称为“中国强制性产品认证”&#xff0c;英文名称China Compulsory Certification&#xff0c;英文缩写CCC。它是中国政府为保护消费者人身安全和国家安全、加强产品质量管理、依照法律法规实施的一种产品合格评定制度。年12月&#xff0c;国家…...

UA-DETRAC数据集转YOLO格式

一&#xff1a; 数据集下载 原官方数据集 链接&#xff1a;https://pan.baidu.com/s/1P_CeSIpJIYSA1dykmFhgYw 提取码&#xff1a; 7f4g 处理完成数据集&#xff08;每10帧取一张&#xff09; 链接&#xff1a;后续添加 提取码&#xff1a;后续添加 二&#xff1a; 处理标…...

代码随想录---二叉树的总结和二叉树的定义

二叉树的种类&#xff1a; 满二叉树&#xff1a;树的所有节点都是满&#xff0c;即都有左右孩子。 这棵二叉树为满二叉树&#xff0c;也可以说深度为k&#xff0c;有2^k-1个节点的二叉树。 完全二叉树&#xff1a;完全二叉树的定义如下&#xff1a;在完全二叉树中&#xff0c…...

Hive SQL 执行计划

我们在写Hive SQL的时候&#xff0c;难免会在运行的时候有报错&#xff0c;所以知道Hive SQL的执行计划具体是什么&#xff0c;然后假如在之后的运行过程中有报错&#xff0c;可以根据执行计划定位问题&#xff0c;调试自己的SQL开发脚本。 一、含义 Hive SQL的执行计划描述S…...

MySQL InnoDB引擎——三层B+树可以存储多少数据量

先说结论&#xff1a; 3层B树大概可以存&#xff1a; 主键为bigint&#xff1a;约2000w主键为int&#xff1a;约4000w*备注&#xff1a; 在《阿里开发手册》中建议&#xff0c;单表行数超过500万行或者单表容量超过2GB&#xff0c;才推荐进行分库分表&#xff0c;如果预计三年后…...

部署跨云容灾的五大难点

为什么企业需要跨云容灾&#xff1f; 据统计&#xff0c;全球已有70%的企业使用云计算服务。上云帮助企业更高效地管理数据资产&#xff0c;但它并非绝对安全。如停电、漏水等机房事故&#xff1b;地震、火灾等自然性灾害&#xff1b;亦或是人为失误&#xff0c;都有可能造成数…...

Docker Compose

为什么需要使用Docker ComposeDocker Compose 容器编排技术1、现在我们有一个springboot项目&#xff0c;需要依赖Redis、mysql、nginx。如果使用docker原生部署的话&#xff0c;则需要安装Redis、mysql、nginx容器&#xff0c;才可以启动我们springboot项目&#xff0c;这样的…...

【ARM架构】armv8 系统安全概述

ARMv8-A 系统中的安全 一个安全或可信的操作系统保护着系统中敏感的信息&#xff0c;例如&#xff0c;可以保护用户存储的密码&#xff0c;信用卡等认证信息免受攻击。 安全由以下原则定义&#xff1a; 保密性&#xff1a;保护设备上的敏感信息&#xff0c;防止未经授权的访问…...

数学小课堂:数学边界

文章目录 引言I 费马大定理1.1毕达哥拉斯定理的推广1.2 一波三折的定理证明过程1.3 希尔伯特第十问题II 数学的边界2.1 认识论问题2.2 在边界内做事情2.3 总结引言 了解数学本身的局限性,才能更好地使用它的原理和思维方式。 数学的边界,这是一个硬的边界,大家不要试图逾越…...

检测中断到来时,让LED灯状态取反,并且在串口工具上打印一句话

任务&#xff1a;检测中断到来时&#xff0c;让LED灯状态取反&#xff0c;并且在串口工具上打印一句话例如&#xff1a;当按键1按下之后&#xff0c;让LED1状态取反&#xff0c;并打印“LED1 down”当按键2按下之后&#xff0c;让LED2状态取反&#xff0c;并打印“LED2 down”当…...

2023年CDGA考试-第7章-数据安全(含答案)

2023年CDGA考试-第7章-数据安全(含答案) 单选题 1.数据安全不仅涉及防止不当访问,也涉及对数据的适当访问,下列理解不正确的是 ( ) A.强密码有助于提高破解风险 B.安全专家建议 45-180天修改一次密码 C.用户要尽量使用多套密码和账户 D.具有高度敏感信息权限的用户都应使…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...