kubeadm一键搭建kubernetes环境

2023-11-14

kubeadm一键搭建kubernetes环境

  1. 安装docker

    按官网教程执行https://docs.docker.com/v17.09/engine/installation/linux/docker-ce/centos/#install-docker-ce-1

    修改docker目录:docker默认目录为/var/lib/docker,可通过修改/usr/lib/systemd/system/docker.service指定目录。
    service docker stop
    vim /usr/lib/systemd/system/docker.service,找到ExecStart,增加  --graph /data1/docker 参数:ExecStart=/usr/bin/dockerd --graph /data1/docker

    执行:service docker start

    systemctl daemon-reload
    可以删除原来的 /var/lib/docker 文件夹了

  2. 安装组件:

    yum install -y kubelet kubeadm kubectl

     

  3. 关闭swap

    swapoff -a

     

  4. 启动master(10.59.88.4)

    kubeadm init --kubernetes-version=v1.9.3 --ignore-preflight-errors=Swap --pod-network-cidr=10.244.0.0/16

    对于 POD Network 我们采用 Flannel,Flannel 默认设置的网段为 10.244.0.0./16,因此我们在 init 命令中使用 --pod-network-cidr=10.244.0.0/16 来指定

     

  5. 设置用户的 kubectl 环境

    # 如果为 root 用户
    $ export KUBECONFIG=/etc/kubernetes/admin.conf
    
    # 如果是非root用户
    $ mkdir -p $HOME/.kube
    $ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    $ chown $(id -u):$(id -g) $HOME/.kube/config
    
    
     # 设置 kubectl补全
     $ kubectl completion bash > ~/.kube/completion.bash.inc
     $ cat ~/.bash_profile
     .....
     source ~/.kube/completion.bash.inc
     .....
    
     $ source ~/.bash_profile
    
    
    #默认情况下 Master 节点不进行 Pod 调度,为了方便测试,我们可以通过以下命令让 Master 参与调度:
    $ kubectl taint nodes --all node-role.kubernetes.io/master-
    
    
    # Flannel 作为 Pod Network,默认网段已经通过 init 参数 --pod-network-cidr=10.244.0.0/16指定。
    $ mkdir -p ~/k8s/
    $ cd ~/k8s
    $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    $ kubectl apply -f  kube-flannel.yml
    clusterrole "flannel" created
    clusterrolebinding "flannel" created
    serviceaccount "flannel" created
    configmap "kube-flannel-cfg" created
    daemonset "kube-flannel-ds" created

     

  6. 初始化Nodes节点(10.59.88.5)

    kubeadm join --token b74172.be4401beb112e39b 10.59.88.4:6443 --discovery-token-ca-cert-hash sha256:817200c3ea2ead62e393ef43dd140ff1c75642af8fc682a3be8d9392512bb464

    其中 token  参数可由kubeadm token list 获得,如果token过期,可以用 kubeadm token create 重新生成一个新的。ip地址为刚才建立的master机器ip,端口默认6443 。

    discovery-token-ca-cert-hash 为ca证书sha256编码hash值,可由以下命令获得:

    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

    在 Master 节点上产生证书并Copy Config到Node节点上:

    $ ssh-keygen              # 一路回车

    $ ssh-copy-id root@10.59.88.5# copy 配置文件到 node2上

    $ scp /etc/kubernetes/admin.conf root@10.59.88.5:/root/.kube/config
                                 

  7. 在master上接受node节点的证书

    kubectl get csr 查看所有申请的证书,使用name执行以下命令接受证书:  kubectl certificate approve node-csr-o62v-6Z934ZTNoiLK20yHEpcBy92INssB2zhTFmFmLQ

    至此集群搭建成功。可使用 kubectl get nodes 查看节点,使用 kubectl cluster-info 查看集群信息。

    安装过程中有任何问题,都可使用 kubeadm reset 重新开始。

     

  8. DashBoard

    $ wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml
    
    #修改下载的kubernetes-dashboard.yaml
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      type: NodePort         ##新增
      ports:
        - port: 443
          targetPort: 8443
          nodePort: 31080    #在上面添加了type: NodePort 之后,最好也设置该nodePort,否则K8S会在30000-32767之间随机选择一个端口,这样的话,我们得通过命令 kubectl get service --all-namespaces 才能找到dashboard对应的端口了
      selector:
        k8s-app: kubernetes-dashboard
    
    
    $ kubectl create -f kubernetes-dashboard.yaml
    # kubernetes-dashboard.yaml文件中的ServiceAccount kubernetes-dashboard只有相对较小的权限,因此创建一个kubernetes-dashboard-admin的ServiceAccount并授予集群admin的权限
    $ cat kubernetes-dashboard-admin.rbac.yaml
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard-admin
      namespace: kube-system
    
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: kubernetes-dashboard-admin
      labels:
        k8s-app: kubernetes-dashboard
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: kubernetes-dashboard-admin
      namespace: kube-system
    
    
    $ kubectl create -f kubernetes-dashboard-admin.rbac.yaml
    serviceaccount "kubernetes-dashboard-admin" created
    clusterrolebinding "kubernetes-dashboard-admin" created
    $ kubectl -n kube-system get secret | grep kubernetes-dashboard-admin
    kubernetes-dashboard-admin-token-f2895           kubernetes.io/service-account-token   3         13m
    
    
    $ kubectl describe secrets kubernetes-dashboard-admin-token-f2895 -n kube-system
    Name:         kubernetes-dashboard-admin-token-f2895
    Namespace:    kube-system
    Labels:       <none>
    Annotations:  kubernetes.io/service-account.name=kubernetes-dashboard-admin
                  kubernetes.io/service-account.uid=84f8c734-4a0d-11e9-bad5-ecf4bbd474e0
    
    Type:  kubernetes.io/service-account-token
    
    Data
    ====
    ca.crt:     1025 bytes
    namespace:  11 bytes
    token:      eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbi10b2tlbi1mMjg5NSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijg0ZjhjNzM0LTRhMGQtMTFlOS1iYWQ1LWVjZjRiYmQ0NzRlMCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiJ9.X6hcIcNWp_cnWpEA6I8pcrEcGOb626bo2CbTDqUxLQfeD5cpkbGp10WLvrZrtMQMb4uwIZdHfcxYtoiuNwdb6LQCmeGS0k-SFibXwRijkRE1yWdVfAt60InFwCkJajAziGe8ZLqmAJVfTeRwe8l0KbBz-WCLuQ5HCZRyDmUDJhipZQLAe_jiiwVt3y43EaavgnsafzTYS3jLavaTW7KTlFmmsu1LFNmLkIhsKzvNQXsx7nu5-yvMjmn39VWDUicUER9BI0hLitQw7KLDQ8c1-SErKSzlt9YDFqZK1tPyNJgLtferAZILQf4IligZwvP-Qs0kOdWk--pb11oB7QZlxA
    
    
    访问:https://10.59.88.4:31080 ,输入这里的token。
    
    
    注:默认开启的dashboard是 https,并且需要登录验证。因为证书问题,内部开发用起来有点麻烦。可以通过修改yml,关闭验证,并把内部 9090 端口映射出来,直接提供http服务。

     

 

参考:http://www.do1618.com/archives/1164/

http://peimc-smp.paic.com.cn:8080/peimcnl/webIm/index.html

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

kubeadm一键搭建kubernetes环境 的相关文章

随机推荐

  • LeetCode(力扣)455. 分发饼干Python

    LeetCode20 有效的括号 题目链接 代码 题目链接 https leetcode cn problems assign cookies 代码 从大遍历 class Solution def findContentChildren s
  • 华为/荣耀 Magicbook/Matebook 开机经常弹出华为智能还原

    问题描述 今年开始 笔者的Magicbook开机时就会弹出华为智能还原 如下所示 检测之后显示是正常的 于是每次都点退出 退出之后就进入了正常的Win10桌面 但是发现 笔记本电脑存在以下问题 有线网络无法连接 网络里面只有无线WiFi可以
  • Nginx教程:配置TCP/IP转发

    安装nginx服务 检查是否编译时带with stream参数 nginx V grep with stream 有with stream参数 可以代理tcp协议 配置nginx的tcp代理 请注意 stream块和http块是两个不同的模
  • python和易语言的脚本哪门更实用?

    前言 每天我们都会面临许多需要高级的编程挑战 你不能用简单的 Python 基本语法来解决这些问题 在本文中 我将分享 13 个高级 Python 它们可以成为你项目中的便捷工具 如果你目前还用不到这些脚本 你可以先添加收藏 以备留用 文末
  • 使用cesium给地图实例添加精灵图图标

    前置条件 1 将精灵图存放在本地文件中 2 拿到对应的声明文件 该文件中存放了每一个类型的地图实例对应的图标在精灵图中的位置 我这里是json文件 这是某一个实例模型对应的数据 我的做法是 系统登录之后 就掉接口获取到该json文件 并存储
  • 云安全技术——Snort安装与配置

    目录 一 Snort简介 二 安装Centos7 Minimal系统 三 基本环境配置 四 安装Snort 五 下载规则 六 配置Snort 七 测试Snort 一 Snort简介 Snort是一个开源的网络入侵检测系统 主要用于监控网络数
  • 二叉排序树的基本操作

    二叉排序树的应用 利用二叉链表存储二叉排序树 输入一组任意序列 实现二叉排序树的创建 插入 删除 中序遍历 要求 有菜单进行选择 安排 2020 6 4 晴朗 二叉排序树的基本定义 1 左子树的所有节点小于根节点 2 若右子树非空 则右子树
  • NANDFlash-W25N01GVZEIG的学习笔记

    文章目录 一 NAND Flash和NOR Flash 二 W25N01GVZEIG引脚说明 三 SPI配置 四 W25N01GVZEIG的架构和寻址 五 W25N01GVZEIG的指令码 六 W25N01GVZEIG各个指令的解析 一 D
  • PCA 解决 多重共线性问题

    PCA 解决 多重共线性问题 学习链接 link 多重共线性是指自变量彼此相关的一种情况 当你拟合模型并解释结果时 多重共线性可能会导致问题 数据集的变量应该是相互独立的 以避免出现多重共线性问题 线性回归中 多重共线性识别 计算每一个自变
  • mac 版 Nginx 的使用及 web 项目的实际部署--最简单的方式

    1 电脑是否已经安装了 brew 1 1 终端输入指令 which brew 如果显示如下图 则证明已安装 如果未安装 终端执行如下指令 bin bash c curl fsSL https raw githubusercontent co
  • qt 绘图QPainter

    QPainter绘图系统 QPainter用来进行绘图操作的类 绘图设备一般包括Qwidget Qpixmap QImage 他们提供给QPainter画布 QPaintDevice是一个可以使用QPainter进行绘图的抽象二维界面 QP
  • 易观千帆

    易观 2023年3月证券服务应用活跃人数14131 58万人 相较上月 环比增长0 61 同比增长0 60 2023年3月自营类证券服务应用Top10 活跃人数6221 44万人 环比增长0 08 2023年3月第三方证券服务应用Top10
  • 【vue】 el-table解决分页不能筛选全部数据的问题

    前言 最近开发前端项目表格的时候 使用的是el table 用到了对应的筛选功能 如下图所示 但发现实际只能筛选当前页 通过百度查找相关文章 发现原因是把筛选条件定义在列上 解决方法 所以我们把filter change绑定在最外部即el
  • Merry Christmas

    N久没有更新 决定还是在多灾多难的2008年的圣诞节留个脚印吧 新房已入住3个月零17天
  • springboot 结合easyexcel实现动态表头的方法

    package com yili survey excel import com alibaba excel EasyExcel import org junit jupiter api Test import org springfram
  • vim三种模式

    vim有三种工作模式 一般模式 指令模式 命令模式 编辑模式 一 一般模式的工作模式 1 移动光标 2 复制和粘贴 3 删除字符 4 查找和替换 二 命令模式的工作模式 1 保存文件 2 退出vi 3 读入外部文件 4 显示行号 三 编辑模
  • vue样式穿透 ::v-deep的具体使用

    vue样式穿透 v deep的具体使用 更新时间 2020年06月04日 11 32 59 转载 作者 柳慕笙 这篇文章主要介绍了vue样式穿透 v deep的具体使用 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习
  • 学习笔记:近似推断(待完善)

    在很多概率模型中 很难训练的最重要的原因是 很难进行推断 所以书中 专门开了这章 来面临训练中最大而又 不能不解决的问题 近似推断 近似推断 可以视为优化问题 主要是 最大化下界 最大化下界 1 EM 期望最大化 2 MAP 最大后验推断
  • STM32 通过HAL库实现双机SPI程序烧录之一SPI双机通信

    一 实现SPI双机通信 主要功能 STM32F407VET6作为主机 STM32F103ZET6作为从机实现F4通过SPI接口发送数据给F1进行串口打印功能 主要是使用STM32cubemx进行相关配置 使用这个软件不能只用于生成代码 要学
  • kubeadm一键搭建kubernetes环境

    kubeadm一键搭建kubernetes环境 安装docker 按官网教程执行https docs docker com v17 09 engine installation linux docker ce centos install