之前的电脑配置不太够,学习K8s就使用“minikube”本机单机部署k8s环境,下载minikube二进制文件启动就可以。现在电脑配置好一些,使用虚拟机部署k8s集群。

部署k8s集群网上方法有很多,大多数都是所有节点安装docker、kubeadm、kubelet,找了一个比较简单的方式,下载安装 kubekey,即可一条命令部署k8s集群。

————————————————————————————————————

准备环境

使用VMware虚拟机 创建3个虚拟机服务,镜像是 CentOS-7-x86_64-DVD-2009.iso 。

192.168.90.128 master
192.168.90.130 note1
192.168.90.131 note2

准备工作

kubekey 下载和使用说明:https://github.com/kubesphere/kubekey/blob/master/README_zh-CN.md
kubekey 官方使用文档:https://kubesphere.io/zh/docs/quick-start/all-in-one-on-linux/

1, 下载安装kubekey。

下载地址:https://github.com/kubesphere/kubekey/releases
可以下载安装包,直接解压即可得到 kubekey二进制文件“kk” 。可以看需要的版本下载,我用的是 1.2.1 。



把二进制文件“kk” 加入系统环境变量内 。

export KKZONE=cn
mv kk /usr/local/bin/

2, 在所有节点上安装相关依赖。

yum install -y socat conntrack ebtables ipset

3, 所有节点关闭网关防火墙。

setenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld关闭swap分区
临时关闭:swapoff -a

4, 所有节点时间同步。

yum install -y chrony
systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai

5, 部署单节点k8s(如要部署集群,跳过此步骤)。

部署单节点的k8s,直接执行

 kk create cluster

指定k8s版本

 kk create cluster --with-kubernetes v1.20.4

6, 部署k8s集群。

先创建配置文件,生成一个 config-sample.yaml 文件。

kk create config

编辑config-sample.yaml,如下,配置节点的服务器名称、地址、密码等信息。

apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:name: sample
spec:hosts:- {name: k8s-master, address: 192.168.90.128, internalAddress: 192.168.90.128, port: 22, user: root, password: 123456}- {name: k8s-node1, address: 192.168.90.130, internalAddress: 192.168.90.130, port: 22, user: root, password: 123456}- {name: k8s-node2, address: 192.168.90.131, internalAddress: 192.168.90.131, port: 22, user: root, password: 123456}roleGroups:etcd:- k8s-mastermaster: - k8s-masterworker:- k8s-node1- k8s-node2controlPlaneEndpoint:##Internal loadbalancer for apiservers internalLoadbalancer: haproxydomain: lb.kubesphere.localaddress: ""port: 6443kubernetes:version: v1.21.5clusterName: cluster.localnetwork:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18registry:registryMirrors: []insecureRegistries: []addons: []

环境初始化,此为检测环境是否有问题,也可以跳过此步骤。

kk init os -f config-sample.yaml

执行部署命令, 会在三个节点进行安装应用。

kk create cluster -f config-sample.yaml

如果出现以下报错:

Error: Failed to download cluster config: Failed to unmarshal configuration: json: cannot unmarshal number into Go struct field HostCfg.spec.hosts.password of type string

修改配置文件 config-sample.yaml,把密码加上双引号即可。

  - {name: k8s-master, address: 192.168.90.128, internalAddress: 192.168.90.128, port: 22, user: root, password: "123456"}- {name: k8s-node1, address: 192.168.90.130, internalAddress: 192.168.90.130, port: 22, user: root, password: "123456"}- {name: k8s-node2, address: 192.168.90.131, internalAddress: 192.168.90.131, port: 22, user: root, password: "123456"}

等待安装完成。。。。。。。

————————————————————————————————

安装完成后,可以看到三个节点的服务器名称变成了对应的节点名称,并且都在目录 /usr/local/bin/ 内安装了 helm 、 kubeadm 、kubectl 、 kubelet等k8s的应用。

[tang@k8s-master ~]$ whereis kubectl
kubectl: /usr/local/bin/kubectl
[tang@k8s-master ~]$ cd /usr/local/bin/
[tang@k8s-master bin]$ ls
etcd  etcdctl  helm  kubeadm  kubectl  kubelet  kube-scripts
[tang@k8s-master bin]$
[tang@k8s-node1 ~]$ whereis kubectl
kubectl: /usr/local/bin/kubectl
[tang@k8s-node1 ~]$ cd /usr/local/bin
[tang@k8s-node1 bin]$ ls
helm  kubeadm  kubectl  kubelet  kube-scripts
[tang@k8s-node1 bin]$
[tang@k8s-node2 ~]$ whereis kubectl
kubectl: /usr/local/bin/kubectl
[tang@k8s-node2 ~]$ cd /usr/local/bin/
[tang@k8s-node2 bin]$ ls
helm  kubeadm  kubectl  kubelet  kube-scripts
[tang@k8s-node2 bin]

切换root用户,查看k8s节点

[root@k8s-master ~]# kubectl get nodes -o wide
NAME         STATUS   ROLES                  AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION           CONTAINER-RUNTIME
k8s-master   Ready    control-plane,master   6d23h   v1.21.5   192.168.90.128   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.8
k8s-node1    Ready    worker                 6d23h   v1.21.5   192.168.90.130   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.8
k8s-node2    Ready    worker                 6d23h   v1.21.5   192.168.90.131   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.8
[root@k8s-master ~]# 

目前基本的k8s环境已经部署完成,还没有部署任何服务,只有k8s应用的服务。

[root@k8s-master ~]# kubectl get pods
No resources found in default namespace.
[root@k8s-master ~][root@k8s-master ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-75ddb95444-p22dg   1/1     Running   3          7d
kube-system   calico-node-8z46l                          1/1     Running   2          7d
kube-system   calico-node-k2ktb                          1/1     Running   2          7d
kube-system   calico-node-p7qrs                          1/1     Running   3          7d
kube-system   coredns-5495dd7c88-hkc76                   1/1     Running   3          7d
kube-system   coredns-5495dd7c88-nqlmt                   1/1     Running   3          7d
kube-system   haproxy-k8s-node1                          1/1     Running   2          7d
kube-system   haproxy-k8s-node2                          1/1     Running   2          7d
kube-system   kube-apiserver-k8s-master                  1/1     Running   3          7d
kube-system   kube-controller-manager-k8s-master         1/1     Running   45         7d
kube-system   kube-proxy-tcsxr                           1/1     Running   2          7d
kube-system   kube-proxy-w748v                           1/1     Running   2          7d
kube-system   kube-proxy-xcvwf                           1/1     Running   3          7d
kube-system   kube-scheduler-k8s-master                  1/1     Running   44         7d
kube-system   nodelocaldns-jwrlk                         1/1     Running   3          7d
kube-system   nodelocaldns-kt7c2                         1/1     Running   2          7d
kube-system   nodelocaldns-lm6h9                         1/1     Running   2          7d
[root@k8s-master ~]
到此基本结束k8s集群部署,以后再部署应用等。。。

——————————————————————————————————————

7,kubekey集群维护

1、添加节点

kk add nodes -f config-sample.yaml

2、 删除节点

kk delete node <nodeName> -f config-sample.yaml

3、删除集群

kk delete clusterkk delete cluster [-f config-sample.yaml]

4、集群升级

kk upgrade [--with-kubernetes version] [--with-kubesphere version]kk upgrade [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]

最简单部署k8s集群(一)相关推荐

  1. 【02】Kubernets:使用 kubeadm 部署 K8S 集群

    写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...

  2. 如何通过rancher部署k8s集群

    目录 1 安装前准备 2 安装rancher 3 配置Rancher 4 创建k8s集群 最近的工作中需要使用到K8S,而面临的第一个问题就是如何部署一个K8S集群环境.现有多种部署方式,如:kube ...

  3. 快速部署 k8s 集群

    部署3个节点的k8s 集群,三个虚机的信息如下所示: 主机名 ip地址 角色 系统os k8s-master 192.168.1.38 worker Ubuntu 18.04.2 LTS k8s-no ...

  4. k8s入门:裸机部署 k8s 集群

    系列文章 第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulS ...

  5. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  6. kubeadm部署K8S集群并使用containerd做容器运行时

    kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...

  7. kubeadm部署k8s集群

    1.准备环境 虚拟机操作系统: Centos7 角色                IP Master        192.168.150.140 Node1        192.168.150. ...

  8. linux上部署K8S集群

    部署K8S集群 服务器硬件要求:三台虚拟机服务器,操作系统都为centos: ​ 硬盘最低配置:内存2GB,CPU2核,硬盘30GB. 准备环境 master 192.168.200.110 node ...

  9. 阿里云部署k8s集群

    ​ 阿里云部署k8s集群 前言 1.k8集群架构 Kubernetes Cluster = N Master Node + N Worker Node:N主节点+N工作节点: N>=1 2.机器 ...

最新文章

  1. validate插件深入学习-01 小白从看透一个插件开始
  2. 趣题:寻找出现了奇数次的数
  3. 网站推广——网站推广专员从蜘蛛角度出发如何进行网站优化
  4. C语言中的static 详细分析
  5. MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型
  6. Linux input子系统 io控制字段【转】
  7. 投票抵制华为鸿蒙系统,网友投票华为十大技术:鸿蒙OS仅排第二!
  8. c构造函数和析构函数_C ++构造函数和析构函数| 查找输出程序| 套装2
  9. java 编码解码_深入解析Java中的编码转换以及编码和解码操作
  10. c++ string substr_用std::string_view替换leveldb的Slice
  11. clickhouse创建数据库以及表
  12. intellij idea 程序包不可见问题
  13. Zigbee之旅(五):几个重要的CC2430基础实验——串口通信
  14. 使用tesserocr二值化识别知网登录验证码
  15. springboot项目在cmd窗口运行后台卡顿问题
  16. 数据库的基本操作习题
  17. C语言实现任意函数求不定积分
  18. 【C】指针的相关运算练习题
  19. 微信公众号开发教程(四)自定义菜单
  20. 用NCL将GRIB/GRIB2文件转成nc文件(批量转),JRA-55再分析为例

热门文章

  1. 掌阅漫画导航栏(可滑动,可下拉)
  2. 亚马逊新开发者账号SP-API Developer申请
  3. 【论文解析】Fast Adaptive Task Offloading in Edge Computing Based on Meta Reinforcement Learning
  4. 用Python进行游戏舆论分析,生成词云,源码赠送,文末 评论送书包邮!!!
  5. 跨界玩CRM营销 开吃餐饮大数据问题
  6. PaddleOCR二次全流程——3.使用TextRender合成图片
  7. 刚打完九价HPV疫苗的幸运儿,来给大家分享一波经验啦!
  8. 用Python的turtle画出beautiful四扇风车图
  9. Java控制台打印爱心算法(今典算法案例)
  10. CSS像素、物理像素、逻辑像素、设备像素比、PPI、Viewport(转载)