当前位置: 首页 > 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.具有高度敏感信息权限的用户都应使…...

输出月份英文名称--C语言实现

任务描述 本关需要你编写一个用指针数组处理的c程序,然后从键盘输入月份时输出对应的英文名。 相关知识 指针 指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。就像其他变量或常量一样,你必须在使用指针存储其他变量地址之前,对其进行声明。 指针变量声明…...

6年测试经验老鸟:做不好自动化测试,还谈什么高薪?

提起自动化测试&#xff0c;可谓仁者见人&#xff0c;智者见智&#xff0c;心中五味杂陈啊&#xff01;你从任何一个招聘渠道来看最近两年对测试岗位的要求&#xff0c;几乎都要求会自动化测试。而不少人一直认为手工测试才是王道&#xff0c;工作中有的时候也用不到程序&#…...

Java Web:开篇综述与第一章

前言 翻开这本书&#xff0c;又是一段新的学习路线&#xff0c;在学习的道路上是枯燥的&#xff0c;是乏味的&#xff0c;难免有放弃的想法。但回看曾经的学习笔记&#xff0c;自己也一步一步走过来了&#xff0c;即使会自我怀疑自我否定&#xff0c;但不坚持不努力是永远没有…...

ES6中对象的一些拓展

当对象键名与对应值名相等的时候&#xff0c;可以进行简写 const obj { name }允许字面量定义对象时&#xff0c;将表达式放在括号内 let lastWord last word;const a {first word: hello,[lastWord]: world };a[first word] // "hello" a[lastWord] // "wo…...

10分钟快速入门Pandas库

pandas 是基于NumPy 的一种工具&#xff0c;该工具是为解决数据分析任务而创建的&#xff0c;这篇文章主要介绍了10分钟快速入门Pandas库,重点介绍pandas常见使用方法&#xff0c;结合实例代码介绍的非常详细&#xff0c;需要的朋友可以参考下目录Pandas的介绍pandas 是基于Num…...

考研复试机试 | C++ | 王道机试课程笔记

目录Zero-complexity (上交复试题)题目&#xff1a;代码&#xff1a;括号匹配问题题目&#xff1a;代码&#xff1a;表达式解析问题 &#xff08;浙大机试题&#xff09;题目&#xff1a;代码&#xff1a;标准库里提供了栈 stack<typename> myStack .size() 栈的大小 .pu…...

【python科目一:生产线系统设计;激光刀切割材料】

工厂有若干条生产线&#xff0c;可以生产不同型号的产品&#xff0c;要求实现功能如下&#xff1a;1. ProductionLineMgmtSys 初始化生产线和产品的生产周期有num条生产线&#xff0c;编号从0开始periods[i]表示生产一个型号为i的产品所需的生产周期&#xff0c;单位为天2. Pro…...

Linux——进程概念(进程状态)

目录 进程状态 三态模型 五态模型 七态模型 Example eg1:阻塞态&#xff1a;等待某种资源的过程 eg2:挂起态 Linux内核源代码 Linux进程状态查看 Linux运行状态 R运行状态&#xff08;running&#xff09;: S睡眠状态&#xff08;sleeping)&#xff1a; D磁盘休眠状…...

超详细:正则表达式从入门到入门

文章目录匹配字符\d \D\s \S量词&#xff1a;匹配多个字符星号*加号问号&#xff1f;大括号{}集合字符[]明确字符范围字符补集字符常见字符集贪婪模式和非贪婪模式匹配开头和结尾贪婪模式和非贪婪模式常用函数re.findall()re.search()re.compile()re.split()re.sub()本文章首发…...

jupyter notebook小技巧

1、.ipynb 文件转word文档 将 jupyter notebook&#xff08;.ipynb 文件&#xff09;转换为 word 文件&#xff08;.docx&#xff09;的最简单方法是使用 pandoc。 首先安装pip install pandoc&#xff0c; 安装后&#xff0c;在将 Jupyter notebook文件目录cmd 然后输入打开…...