创建多节点 k8s 集群

在这里插入图片描述

主机IP系统
master192.168.2.15ubuntu20.04 x64 2C 4G
Worker1192.168.2.16ubuntu20.04 x64 2C 4G
Worker1192.168.2.18ubuntu20.04 x64 2C 4G

使用 iterm2 连接四台服务器 command + shift + i 同时操作

  1. 初始化配置

    关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    

    关闭selinux

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

    关闭swap

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

    根据规划分别设置主机名

    hostnamectl set-hostname <hostname>
    master1、worker1、worker2
    

    在master添加hosts

    cat >> /etc/hosts << EOF
    192.168.2.15 k8s-master1
    192.168.2.18  k8s-worker1
    192.168.2.16 k8s-worker2
    > EOF
    

    将桥接的 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  # 生效
    

    时间同步

    yum install ntpdate -y
    ntpdate time.windows.com
    
  2. 所有节点安装 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
    

    image-20240326110023468

  3. 配置镜像下载加速器

    vim /etc/docker/daemon.json
    # 添加
    {
      "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
      "exec-opts": ["native.cgroupdriver=systemd"]
    }
    
    systemctl restart docker
    
    docker info   #查看docker信息,进行确认
    
    # 添加软件源:
    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
    
  4. 安装 kubeadm、kubelet、kubectl:

    yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
    systemctl enable kubelet
    
  5. 部署 k8s-master【master执行】

    kubeadm 部署(需要等上一会),需要在两个 master 上分别执行,apiserver 分别指定自身 IP
    
    kubeadm init \
    --apiserver-advertise-address=192.168.2.15 \
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version v1.23.0 \
    --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中保持一致
    # 初始化之后,会输出一个join命令,先复制出来,node节点加入master会使用
     kubeadm join 192.168.2.15:6443 --token uyx18p.o5yd0n88fd3rny6i \
    	--discovery-token-ca-cert-hash sha256:5db69227ff23b9073e74d7aa244fa04f9b42aa6c512220612e9bfca1e93fb6d9
    
  6. 拷贝 k8s 认证文件

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

    image-20240326113120860

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

  7. 配置 k8s 的 node 节点【node节点操作】

    在 node 节点执行加入命令,执行后在 master 可以看到新增节点

    image-20240326113537365

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

     kubeadm token create --print-join-command
    
  8. 部署 CNI 网络插件

    在上述操作完成后,各个工作节点已经加入了集群,但是它们的状态都是 NoReady,这是由于无它们无法跨主机通信的原因。而 CNI 网络插件的主要功能就是实现 pod 资源能够跨宿主机进行通信。在master节点中执行以下命令进行配置:

    wget https://docs.projectcalico.org/manifests/calico.yaml
    

    下载完后还需要修改里面定义 Pod 网络(CALICO_IPV4POOL_CIDR),取消注释,value 与前面 kubeadm init 的 --pod-network-cidr 指定的一样

    image-20240326114731922

    # 修改完后文件后,进行部署:
    kubectl apply -f calico.yaml
    
    kubectl get pods -n kube-system                        #执行结束要等上一会才全部running
    

    image-20240326115042360

    注:以后所有 yaml 文件都只在 Master 节点执行。

    安装目录:/etc/kubernetes/

    组件配置文件目录:/etc/kubernetes/manifests/

  9. 部署 Dashboard

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

    YAML下载地址:

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

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

    image-20240326125305036

    使用命令判断启动状态

    kubectl get pods --all-namespaces
    kubectl get pods -n kubernetes-dashboard
    

    image-20240326141400965

    浏览器访问:https://NodeIP:30001

    image-20240326143206185

    报错解决:Dashboard 证书不信任,浏览器无法访问

    1、删除默认的secret,用自签证书创建新的secret
    kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
    kubectl create secret generic kubernetes-dashboard-certs --from-file=/etc/kubernetes/pki/apiserver.key --from-file=/etc/kubernetes/pki/apiserver.crt -n kubernetes-dashboard
    
    2、修改dashboard.yaml文件,在args下面增加如下两行
       args:
         - --auto-generate-certificates
    	 - --tls-key-file=apiserver.key
    	 - --tls-cert-file=apiserver.crt
    	 
    3、重新应用yaml即可
    kubectl apply -f kubernetes-dashboard.yaml
    
    说明:新版本镜像2.0.3及以上已解决证书信任问题,可任意浏览器访问
    
  10. 创建 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}')
    

    image-20240326143417032

    使用创建的 token 登录 dashboard

    image-20240326143924132

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/489760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习】软件测试中,我们如何有效地跟踪和管理缺陷?

在软件测试中&#xff0c;如何有效地跟踪和管理缺陷&#xff1f;别急&#xff0c;一起来看下小编今日带来的分享。 1.缺陷报告 建立一个缺陷报告系统&#xff0c;让用户和团队成员能够提交缺陷报告。确保缺陷报告中包括清晰的问题描述、重现步骤、预期结果和实际结果等信息。2…

数组的概述

数组的概述 为什么需要数组 需求分析1&#xff1a; 需要统计某公司50个员工的工资情况&#xff0c;例如计算平均工资、找到最高工资等。用之前知识&#xff0c;首先需要声明50个变量来分别记录每位员工的工资&#xff0c;这样会很麻烦。因此我们可以将所有的数据全部存储到一…

java使用阿里巴巴oss

一 .准备 进入阿里 进入控制台 创建bucket 新建目录 点击AccessKey管理 创建AccessKey并复制下载key值 二.使用 导入阿里巴巴和spring依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version&…

进程管理命令

进程的概念 进程:运行中的程序(过程,动态) 程序:存储在磁盘上的二进制可执行文件;(静态) 操作系统是通过管理进程,让进程运行来完成用户的任务的; PCB:进程控制块,记录的是进程的相关属性信息;PID:是操作系统对进程的标识;唯一的; 简而言之, 程序:指令数据; 进程:运行中的程序…

Linux:进程概念认识

进程 基本概念 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等 内核观点&#xff1a;担当分配系统资源&#xff08; CPU 时间&#xff0c;内存&#xff09;的实体。 描述进程 -PCB 进程信息被放在一个叫做进程控制块的数据结构中&#xff0c;可以理解为…

前端必会的一些基础

1、如何把obj对象 添加到arr数组对象内 2、手机号、邮箱、隐藏用户手机号中间四位正则 3、两个数组 数组a未全部人员 数组b为已选中人员 默认选中 4、数组去重、 5、localStorage 存取 数组 方法 6、数据filter过滤 7、请求接口时header 请求格式不对 需要怎么转换&#xf…

缺省和重载——初识c++

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 C输入&输出cout 和cin<<>> 缺省参数全缺省半缺省应用场景声明和定义分离的情况 函数重载1.参数的类型不同2.参数的个数不同3.参数的顺…

C++运算符重载中的引用返回

文章目录 引言原因1.为了支持链式调用2.避免不必要的对象创建和复制3.保持语义一致性 引言 在C编程语言中&#xff0c;运算符重载是一项强大的特性&#xff0c;它允许程序员为自定义类型重新定义或重载已有的运算符&#xff0c;从而使得这些类型能够像内置类型一样使用运算符。…

数学建模之MATLAB使用

1.数值计算和符号计算的认识 我们都知道MATLAB里面存在着数值计算和符号计算&#xff0c;但是两者之间到底是怎样的呢&#xff1f; 举一个很简单的例子&#xff0c;我们在高等数学里面的微积分学习时经常求不定积分&#xff0c;也就是原函数&#xff0c;这个过程实际上进行的…

javaWeb学生宿舍管理系统

一、摘要 本博客介绍了如何使用Spring Boot和MySQL构建一个功能完善的JavaWeb学生宿舍管理系统。该系统分为三个角色&#xff1a;管理员、宿管和学生。管理员拥有对整个系统的全面管理权限&#xff0c;包括学生管理、宿舍管理、入住管理和管理员管理&#xff1b;宿管负责宿舍的…

高级 IO

1、五种IO模型 阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式&#xff1b; 阻塞IO是最常见的IO模型&#xff1b; 非阻塞IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK错误码&#xff1b; 非阻塞IO往往…

QMT量化交易上手

文章目录 QMT介绍基本使用代码初始化股票和行情交易量化策略示例相关链接QMT介绍 QMT是迅投公司出品量化交易客户端软件,目前只能运行在windows机器上,分为QMT 和 miniQMT两种模式,后者可以采用python API做程序化交易,极大方便了广大散户。这点上比同花顺/通信达好很多。…

Filter、Listener、AJAX

Filter 概念&#xff1a;Filter 表示过滤器&#xff0c;是JavaWeb三大组件(Servlet、Filter、 Listener)之一。 过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。 过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;权限控制、统一编码处理、敏感…

百度谷歌301强引蜘蛛池效果怎么样

301强引蜘蛛池效果怎么样 本文 虚良SEO 原创&#xff0c;转载保留链接&#xff01;网址&#xff1a;百度谷歌301强引蜘蛛池效果怎么样 - 虚良SEO 随着搜索引擎优化&#xff08;SEO&#xff09;技术的发展&#xff0c;越来越多的网站开始采用蜘蛛池技术来提高网站的排名和流量。…

电脑如何一键修复所有dll缺失,几种修复dll文件丢失的方法

修复所有DLL&#xff08;动态链接库&#xff09;文件缺失的问题通常不可能通过单一的"一键修复"按钮来实现&#xff0c;因为DLL文件缺失可能由各种不同的原因导致&#xff0c;比如应用程序安装不正确、病毒感染、或系统文件损坏等。 使用内置的系统文件检查器&#x…

科东软件鸿道IntewellV2.3.2版本发布说明

一、软件发布版本信息 版本号&#xff1a;V2.3.2版本发布类型&#xff1a;beta受限版本 二、版本特点 1.合并分支代码 2.RTOS支持X86 64位 三、运行环境推荐 Intewell developer可以运行在windows7及windows10 64位 四、支持硬件列表

覃超老师 算法面试通关40讲

教程介绍 无论是阿里巴巴、腾讯、百度这些国内一线互联网企业&#xff0c;还是 Google、Facebook、Airbnb 等硅谷知名互联网公司&#xff0c;在招聘工程师的过程中&#xff0c;对算法和数据结构能力的考察都是重中之重。本课程以帮助求职者在短时间内掌握面试中最常见的算法与…

软件测试工程师这样面试,90%能拿到offer

如果大家有关注一些测试类的文章的话&#xff0c;肯定会发现很多人都在表示今年行业受到疫情的影响&#xff0c;工作很难找&#xff0c;那情况真的是如此么?你只是不知道面试官的意图是什么&#xff0c;不知道他考察你的点在哪里。只要弄明白面试中的一些固有套路&#xff0c;…

离线linux服务器安装mysql8

本文的服务器环境&#xff1a;openEuler毛坯版的&#xff0c;很多常用的指令都没有预装&#xff0c;比如rpm、tar等等&#xff0c;没有网络坏境&#xff0c;需要自己手动配置本地yum仓库&#xff0c;安装相关指令 1、检查服务器是否已经安装了MySQL 1.1、查询mysql以安装的相关…

uni-app中web-view的使用

1. uni-app中web-view的使用 uni-app中的web-view是一个 web 浏览器组件&#xff0c;可以用来承载网页的容器&#xff0c;uni-app开发的app与web-view实现交互的方式相关简单&#xff0c;应用通过属性message绑定触发事件&#xff0c;然后在web-view的网页向应用 postMessage 触…