部署kubernetes
本次部署的内容镜像为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相关推荐
- 【CentOS】利用Kubeadm部署Kubernetes (K8s)
[CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...
- 使用Kubespray部署Kubernetes集群
Kubespray是Google开源的一个部署生产级别的Kubernetes服务器集群的开源项目,它整合了Ansible作为部署的工具.项目地址:https://github.com/kubernet ...
- 3MIN干完一周的工作量?快来看看应该如何部署 Kubernetes!
关注TJ君,回复"武功秘籍"免费获取计算机宝典书籍 平时大家是不是研读过很多关于安装高可用kubernetes的文献,对于如何安装想必都有自己的私藏宝典吧? 不过安装kuberne ...
- 一份详尽的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北
2019独角兽企业重金招聘Python工程师标准>>> 概 述 Kubernetes集群的搭建方法其实有多种,比如我在之前的文章<利用K8S技术栈打造个人私有云(连载之:K8S ...
- Kubernetes端到端解决方案Part3:如何正确部署Kubernetes
戳蓝字"CSDN云计算"关注我们哦! 在之前的文章中我们向您介绍了Kubernetes的入门挑战以及如何执行端到端的即服务解决方案.本篇文章,我们将继续探讨如何正确部署Kubern ...
- 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)
安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...
- 容器编排技术 -- 使用Minikube 部署 Kubernetes 集群
容器编排技术 -- 使用Minikube 部署 Kubernetes 集群 单机部署 创建Kubernetes cluster(单机版)最简单的方法是minikube: 首先下载kubectl cur ...
- 二进制部署Kubernetes v1.13.4 HA可选
本次采用二进制文件方式部署,本文过程写成了更详细的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansible 和之前的步骤差不多都 ...
- [原]部署kubernetes dashboard(二)
####################### 以下为声明 ##################### 此文档是之前做笔记在两台机上进行的实践,kubernetes处于不断开发阶段 不能保证每 ...
- CentOS 使用二进制部署 Kubernetes 1.13集群
CentOS 使用二进制部署 Kubernetes 1.13集群 一.概述 kubernetes 1.13 已发布,这是 2018 年年内第四次也是最后一次发布新版本.Kubernetes 1.13 ...
最新文章
- Nginx安装及运行服务
- 量子计算机功率,美国物理学家证明光纤可提升超导量子计算机的功率
- 解决 git extensions 每次提交需要输入用户名和密码
- linux 网卡配置不一致,linux环境下,双网卡配置不同网段后,路由问题
- Hibernate 拦截器实例
- 坚持的力量 第十一篇
- 为什么macOS比Windows快那么多,是硬件的缘故么?
- sql server 群集_SQL Server 2014 –安装群集实例–分步(2/3)
- python的常量和变量_python中的常量和变量代码详解
- Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language):	1 1.3. 静态类型语言(Statically Typed Languag
- 值得苦练的100道Python经典练手题,(附详细答案)
- android局域网怎么传文件,两手机同一局域网怎么传文件
- Win10硬盘安装器(WinNTSetup 64位) v3.9.4 中文绿色版
- 《VP9 Video Codec》Overview
- 简述数字信号处理的内容和理论
- kong_团结的面Kong:国际妇女节
- java jsp实现网站访问量的统计
- ubuntu vscode use clang-format google style
- chrome 安装插件(无需翻墙)
- 守护线程和用户线程的真正区别(实例讲解)
热门文章
- sougou ubuntu 优麒麟_Ubuntu20.04LTS安装搜狗输入法
- mysql导出文件名乱码_快速解决mysql导出scv文件乱码、蹿行的问题
- 服务器子接口配置的几种方式:子接口模式、vlan模式
- c语言 圆周率10000位,计算圆周率 Pi (π)值, 精确到小数点后 10000 位(C语言)
- 蓝牙智能音响测试软件,【天猫精灵蓝牙音箱使用总结】APP|连接|音质|资源|控制_摘要频道_什么值得买...
- 系统修复-菜鸟也DIY
- 信源编码程序设计实验C语言实现,霍夫曼信源编码实验报告.docx
- TortoiseSVN文件夹没有绿色对号(√)的解决方案
- Vue Echarts飞机航线图
- 神经网络加速器设计研究:寒武纪DianNao论文阅读