本次部署的内容镜像为Ubuntu Server 20.04 LTS版和Docker v19.3.15版,并且默认为已经完成安装。要求:1.主节点 Master: CPU 内核总数>=2; 内存 2G(官方要求最少 1700MB); 硬盘 40G 。2.工作节点 Worker: CPU 内核总数>=1 ;内存 1G ;硬盘 40G。切记k8s暂不支持20版本的docker。有什么问题可以在下面留言,一起学习一起进步

kubeadm 的安装

采用官方的 kubeadm 方式部署,涉及到三个软件包,它们均需要在集群中的每个节点上安装:

 kubeadm:用来初始化集群的指令;

 kubelet:在集群中的每个节点上用来启动 Pod 和容器等;

 kubectl:用来与集群通信的命令行工具。

1) 启动系统,并远程登录。安装必要的系统工具:

root@k8s:~# apt-get update && apt-get install -y apt-transport-https

2) 安 装 Kubernetes 的 GPG 证 书 , 使 用 命 令 “ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -”:

root@master01:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add –

3) 增加 Kubernetes 软件源,创建/etc/apt/sources.list.d/kubernetes.list 文件,内容如下:

deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

国内相关机构与组织提供的 Kubernetes 软件源,地址如下:

 清华镜像站:https://mirrors.tuna.tsinghua.edu.cn/kubernetes/apt/

 阿里云镜像站:https://mirrors.aliyun.com/kubernetes/apt/ 推荐

 腾讯云镜像站:http://mirrors.cloud.tencent.com/kubernetes/apt/

 中国科学技术大学镜像站:http://mirrors.ustc.edu.cn/kubernetes/apt/

更新软件源: root@master01:~# apt-get update

4) 查看当前安装源中 kubeadm 的所有版本信息:

root@master01:~# apt-cachemadison kubeadm

5) 安装 kubeadm 1.20.4 版。安装指定版本的 kubeadm,需要同时指定 kubeadm、kubelet 和 kubectl 三个软件的版本,它们的版本必须相同。本次将使用Kubernetes 的 1.21.0版本,在指定版本时, “=1.20.4-00”是通过前一步骤 apt-cache madison kubeadm 查看获取的。具体如下:

root@master01:~# apt-get install kubeadm=1.20.4-00 kubelet=1.20.4-00 kubectl=1.20.4-00

注:若要安装最新版,使用 apt-get install kubeadm 命令即可,无需给出具体版本。

6) Kubernetes 需要使通过网桥的数据包由主机系统上的 iptables 规则处理,其默认为 关闭状态,因此需要修改配置开启。创建/etc/sysctl.d/k8s.conf 文件,内容如下:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

7) 手动加载所有配置文件,使之生效:

root@master01:~# sysctl –system

Kubernetes 集群环境部署

1.修改主节点与从节点的 hosts 文件,使用 vim 编辑/etc/hosts 文件,如下图:

2.先进行 kubeadm 与 kubectl 命令参数自动补全配置。仅在主节点 master上,使用 vim 命令编辑/root/.bashrc 文件,在文件末尾添加如下内容:

# kubeadm

source <(kubeadm completion bash)

# kubetcl

source <(kubectl completion bash)

更新配置,使之生效:

root@master01:~# source /root/.bashrc

3.在主 节点 master上创建 init-cluster 目录,在该目录下生成集群控制平面配置文件 init-defaults.yaml:

root@master01:~# mkdir init-cluster

root@master01:~# cd init-cluster/

root@master01:~/init-cluster# kubeadm config print init-defaults > init-defaults.yaml

root@master01:~/init-cluster# ls

init-defaults.yaml

看到生成文件后,使用vim编辑更改init-defaults.yaml文件四部分内容

1) localAPIEndpoint.advertiseAddress 字段,表示 API Server 地址,此处修改为主节点 masterIP 地址:

advertiseAddress: 192.168.53.100

2) nodeRegistration.name 字段与 taints 字段,在 Kubernetes 1.21.0 中,由于引入 Bug 原 因,name 字段与 taints 字段不会自动修改,需要手动调整为示例中的值,用于设置 主节点的节点名与初始化后主节点是否参与常规 Pod 的调度。但本次使用Kubernetes 1.20.4,此部分保持不变即可。

3) clusterName 字段,表示集群名称,这里集群名设定为 cluster-demo: clusterName: cluster-demo

4) imageRepository 字段,表示部署集群时使用的镜像仓库地址(默认值为 k8s.gcr.io, 需要访问 Google,因此修改为国内可用镜像仓库,推荐使用阿里云镜像仓库):

imageRepository: registry.aliyuncs.com/google_containers

除了本示例中的镜像仓库之外,还可以使用阿里云杭州镜像仓库替代:

 阿里云杭州镜像仓库:registry.cn-hangzhou.aliyuncs.com/google_containers

 Docker Hub:mirrorgooglecontainers (不稳定)

4.控制平面初始化。在主节点 master上进行控制平面集群初始化,使用 kubeadm init 命令:

root@master01:~/init-cluster# kubeadm init –config init-defaults.yaml

“Your Kubernetes control-plane has initialized successfully!”表明控制平面集群初始化成功。

5.kubectl 配置文件。在用户当前主目录(~/,也即$HOME 目录)中创建隐藏目录,然后将 admin.conf 拷贝到隐藏目录中,再修改对应的所属用户与组。 root@master01:~# mkdir -p $HOME/.kube

root@master01:~# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

root@master01:~# chown $(id -u):$(id -g) $HOME/.kube/config

root@master01:~# kubectl get nodes

虽然使用 admin.conf 配置文件,可以使 kubeclt 连接到集群中,但是目前 master主节点的状态为 NotReady。接下来就需要配置Kubernetes 网络。

6.Kubernetes 网络。本次使用 Calico 网络,可使用 kubectl apply 命令安装 Calico 网络:

root@master01:~# kubectl apply -f https://docs.projectcalico.org/v3.18/manifests/calico.yaml

若在使用 Calico 网络时,提示“calico/node is not ready: BIRD is not ready: BGP not established”,可以使用 kubectl edit 命令对相应资源进行编辑:

root@master01:~# kubectl edit -n kube-system daemonsets.apps calico-node

该命令将直接使用 Linux 的 vi 打开相应的配置文件,所以,在操作过程中支持 vi 指令。 使 用 vi 的 “ :set nu ” 指 令 开 启 vi 行 数 显 示 , 在 第 70 行 左 右 ,“ – name: CALICO_DISABLE_FILE_LOGGING”键值对之后,添加如下信息:

– name: CALICO_DISABLE_FILE_LOGGING # 原信息

value: “true” # 原信息

– name: IP_AUTODETECTION_METHOD

value: interface=ens33

注意,此处 ens33 为通过 ip addr 查看得到的实际网卡设备名。切记,一定要注意yaml文件的缩进问题,要与上面的文件同样的缩进。阿里云上的设备一般为 eth0,而 VMware Workstation 中,则为 ens33。 创建完成 Kubernetes 的网络之后,再次查看节点信息:

root@master01:~# kubectl get nodes

主节点 master状态已经变更为 Ready。至此,集群创建完成,只是当前集群内部仅有主节点一个,需要将其他工作节点加入到当前集群中。

节点添加

使用 kubeadm token create –print-join-command 命令,自 动生成可直接运行于待加入工作节点之上的节点加入命令:

root@master01:~# kubeadm token create –print-join-command

kubeadm join 192.168.211.209:6443 –token 3j1ik7.k8v205bdlvvyjcie –discovery-token-ca-cert-hash sha256:2db0c967a424aa39a12d83ca7ea679433ad21c16ed5acde351f5a3b4c1cda612

直接复制输出内容到其他待加入工作节点加入集群。在主节点 master上使用 kubectl get nodes 查看节点信息:

root@master01:~# kubectl get nodes

可以看到刚加入的节点已经出现

标签 Label

可使用 kubectl get –show-labels 命令查看标签。例如,查看当前所 有节点的标签:

root@master01:~# kubectl get nodes –show-labels

查看工作节点 worker01 的标签:

root@master01:~# kubectl get nodes node01 –show-labels

可使用 kubectl label 命令为对象添加标签 Label。例如, 向工作节点 node01 添加标签

kubectl label nodes node01 node-role.kubernetes.io/worker=

查看结果如下图:

至此部署完成

部署kubernetes相关推荐

  1. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  2. 使用Kubespray部署Kubernetes集群

    Kubespray是Google开源的一个部署生产级别的Kubernetes服务器集群的开源项目,它整合了Ansible作为部署的工具.项目地址:https://github.com/kubernet ...

  3. 3MIN干完一周的工作量?快来看看应该如何部署 Kubernetes!

    关注TJ君,回复"武功秘籍"免费获取计算机宝典书籍 平时大家是不是研读过很多关于安装高可用kubernetes的文献,对于如何安装想必都有自己的私藏宝典吧? 不过安装kuberne ...

  4. 一份详尽的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北

    2019独角兽企业重金招聘Python工程师标准>>> 概 述 Kubernetes集群的搭建方法其实有多种,比如我在之前的文章<利用K8S技术栈打造个人私有云(连载之:K8S ...

  5. Kubernetes端到端解决方案Part3:如何正确部署Kubernetes

    戳蓝字"CSDN云计算"关注我们哦! 在之前的文章中我们向您介绍了Kubernetes的入门挑战以及如何执行端到端的即服务解决方案.本篇文章,我们将继续探讨如何正确部署Kubern ...

  6. 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)

    安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...

  7. 容器编排技术 -- 使用Minikube 部署 Kubernetes 集群

    容器编排技术 -- 使用Minikube 部署 Kubernetes 集群 单机部署 创建Kubernetes cluster(单机版)最简单的方法是minikube: 首先下载kubectl cur ...

  8. 二进制部署Kubernetes v1.13.4 HA可选

    本次采用二进制文件方式部署,本文过程写成了更详细的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansible 和之前的步骤差不多都 ...

  9. [原]部署kubernetes dashboard(二)

    #######################    以下为声明  ##################### 此文档是之前做笔记在两台机上进行的实践,kubernetes处于不断开发阶段 不能保证每 ...

  10. CentOS 使用二进制部署 Kubernetes 1.13集群

    CentOS 使用二进制部署 Kubernetes 1.13集群 一.概述 kubernetes 1.13 已发布,这是 2018 年年内第四次也是最后一次发布新版本.Kubernetes 1.13 ...

最新文章

  1. Nginx安装及运行服务
  2. 量子计算机功率,美国物理学家证明光纤可提升超导量子计算机的功率
  3. 解决 git extensions 每次提交需要输入用户名和密码
  4. linux 网卡配置不一致,linux环境下,双网卡配置不同网段后,路由问题
  5. Hibernate 拦截器实例
  6. 坚持的力量 第十一篇
  7. 为什么macOS比Windows快那么多,是硬件的缘故么?
  8. sql server 群集_SQL Server 2014 –安装群集实例–分步(2/3)
  9. python的常量和变量_python中的常量和变量代码详解
  10. Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language): 1 1.3. 静态类型语言(Statically Typed Languag
  11. 值得苦练的100道Python经典练手题,(附详细答案)
  12. android局域网怎么传文件,两手机同一局域网怎么传文件
  13. Win10硬盘安装器(WinNTSetup 64位) v3.9.4 中文绿色版
  14. 《VP9 Video Codec》Overview
  15. 简述数字信号处理的内容和理论
  16. kong_团结的面Kong:国际妇女节
  17. java jsp实现网站访问量的统计
  18. ubuntu vscode use clang-format google style
  19. chrome 安装插件(无需翻墙)
  20. 守护线程和用户线程的真正区别(实例讲解)

热门文章

  1. sougou ubuntu 优麒麟_Ubuntu20.04LTS安装搜狗输入法
  2. mysql导出文件名乱码_快速解决mysql导出scv文件乱码、蹿行的问题
  3. 服务器子接口配置的几种方式:子接口模式、vlan模式
  4. c语言 圆周率10000位,计算圆周率 Pi (π)值, 精确到小数点后 10000 位(C语言)
  5. 蓝牙智能音响测试软件,【天猫精灵蓝牙音箱使用总结】APP|连接|音质|资源|控制_摘要频道_什么值得买...
  6. 系统修复-菜鸟也DIY
  7. 信源编码程序设计实验C语言实现,霍夫曼信源编码实验报告.docx
  8. TortoiseSVN文件夹没有绿色对号(√)的解决方案
  9. Vue Echarts飞机航线图
  10. 神经网络加速器设计研究:寒武纪DianNao论文阅读