ChatGPT也不会的k8s安装方法——极简安装法

2023-11-19

要学习k8s,首先要有一个k8s。那么如何才能获得一个k8s呢?这不由得让我想到了最近比较火的ChatGPT,以下简称小恰。

俗话说,遇事不决问小恰,解决效率翻上翻。让我们先来看看小恰怎么回答的吧。

问小恰

由于众所周知的原因,国内使用小恰比较麻烦,这里我们使用一个chatgpt的命令行工具,chatgo。

代码在github上可以找到(https://github.com/xavierxcn/chatgo)。

# 安装go install github.com/xavierxcn/chatgo@latest
# 设置openai tokenchatgo set <your-token>
# 开启一个对话chatgo chatinit robot...init robot success.
> 你叫什么名字chatgo:我叫ChatGo,很高兴能够为你服务!有什么可以帮到你的吗?

这样就可以和小恰对话了,让我们试试看

​​​​​​​

> 如何快速安装k8schatgo: 安装 Kubernetes 的最快方式是使用预构建的二进制文件,如 kubeadm、kubelet 和 kubectl。以下是快速安装 Kubernetes 的步骤:1. 根据主机操作系统下载所需的二进制文件2. 在所有主机上安装二进制文件3. 在主节点上运行 kubeadm init,按照提示进行操作4. 在工作节点上运行 kubeadm join,根据主节点上的输出信息操作5. 安装 CNI 插件,如 Flannel6. 等待 Kubernetes 集群部署完成这只是简要的概述,如果需要更详细的步骤和说明,请参考 Kubernetes 官方文档。

没一句有用的,让我们问详细一点

> 请告诉我详细的安装过程和需要执行的命令              chatgo: 好的,以下是在 Ubuntu 18.04 操作系统上快速安装 Kubernetes 集群的详细步骤:## 预先要求在开始之前,确保已满足以下先决条件:- 操作系统:Ubuntu 18.04- 主机名解析:确保每个节点都可以通过主机名互相解析,例如使用主机名或 DNS 解析- 安装 Docker:使用 Docker 作为容器运行时,具体过程可以参考 [Docker 官方文档](https://docs.docker.com/engine/install/ubuntu/)- 网络设置:确保每个节点之间可以互相通信,例如在同一局域网内## 步骤 1:安装 kubeadm、kubelet 和 kubectl### 1. 添加 Kubernetes APT 存储库执行下面的命令添加 Kubernetes APT 存储库:```curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"```### 2. 安装 kubeadm、kubelet 和 kubectl执行以下命令在所有节点上安装 kubeadm、kubelet 和 kubectl:```sudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectl```### 3. 禁用自动更新执行以下命令禁用 kubelet 的自动更新:```sudo apt-mark hold kubelet kubeadm kubectl```这样可以确保在稍后升级 Kubernetes 时不会自动更新这些组件,因为这可能会导致版本不一致。## 步骤 2:部署 Kubernetes 控制平面### 1. 初始化主节点选择一个节点作为 Kubernetes 主节点,然后执行以下命令进行初始化:```sudo kubeadm init --pod-network-cidr=10.244.0.0/16```其中 `--pod-network-cidr` 参数是要使用的 [CNI 插件](https://kubernetes.io/docs/concepts/cluster-administration/networking/) 网络地址段。在这个例子中,使用的是 Flannel 插件需要的 CIDR 地址段。执行上述命令后,您将看到输出,其中包含加入集群所需的命令。记下这些命令,稍后在工作节点上使用。### 2. 配置 kubectl执行以下命令配置当前用户的 kubectl:```mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config```### 3. 部署 CNI 插件执行以下命令安装 Flannel CNI 插件:```kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml```## 步骤 3:加入工作节点在工作节点上执行第一步中提供的加入命令,例如:```sudo kubeadm join <ip_address>:<port> --token <token> --discovery-token-ca-cert-hash <hash>```其中,`<ip_address>:<port>` 是主节点的 IP 地址和端口号,`<token>` 和 `<hash>` 是在主节点初始化时为您提供的。执行上述命令后,您应该在主节点上看到输出,确认节点已成功加入集群。## 步骤 4:验证集群状态执行以下命令验证 Kubernetes 集群状态:```kubectl get nodes```如果所有节点都已成功加入集群,则应该看到所有节点的状态为 `READY`。恭喜您,您已成功安装 Kubernetes 集群!

好吧,看来小恰也只会这些了。

这显然不是我们想要的,那实际应该怎么做呢?具体步骤如下。

使用kind安装本地实验环境

kind是一个快速安装k8s的工具,其含义为K8s in Docker,具体的原理这里就不深究了,我们只需要知道可以通过kind快速获得一个可用的k8s学习和实验环境即可:

1. 安装 Kind

使用以下命令来安装 Kind:

# win

choco install kind

# mac

brew install kind

# linux​​​​​​​

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64chmod +x ./kindsudo mv ./kind /usr/local/bin/kind

kind依赖docker,因此需要我们自行安装好docker才行。

2. 创建集群

使用以下命令来创建一个 K8s 集群:

kind create cluster --name mycluster

此命令会默认创建一个名为 `mycluster` 的本地 K8s 集群。可以在命令行参数中指定自定义的名称、配置文件等。

3. 部署应用

可以使用 `kubectl` 直接部署应用到本地的 Kind 集群中:

​​​​​​​

kubectl create deployment nginx --image=nginxkubectl expose deployment nginx --port=80 --type=LoadBalancer

这个示例是部署一个 Nginx 应用,并将其暴露为一个 `Load Balancer` 类型的服务。

4. 销毁集群

当你完成实验后,可以使用以下命令来销毁 K8s 集群:

kind delete cluster --name mycluster

这样,Kubernetes 集群将被永久移除。

这是一个简单的实验环境,可以在自己的电脑上轻松安装一个 K8s 容器集群。这个环境通常被用来测试一些 DemonSet 或 StatefulSet 来模拟在 Kubernetes 生产环境下的一些行为。

使用kubekey安装生产环境

kind只适合在本地实验环境使用,要在生产环境中安装k8s的话,还是对环境有更高的要求。目前较为常规的做法依然是使用kubeadm来安装,也就是上面小恰告诉我们的方法。然而随着k8s社区的越发壮大,已经出现了一些比较方便我们安装k8s的工具,kubekey就是其中之一。下面我们使用kubekey来安装一套能够满足生成环境的k8s。

我们安装一个三主五从的高可用k8s环境,首先需要准备七台服务器,配置好用户名和密码,最好是使用root,以避免一些奇奇怪怪的问题。

1. 安装kubekey

​​​​​​​

curl -sfL https://get-kk.kubesphere.io | sh -chmod +x kk

2. 创建并编译k8s集群的配置

apiVersion: kubekey.kubesphere.io/v1alpha2kind: Clustermetadata:name: samplespec:hosts:- {name: master1, address: 192.168.32.20, internalAddress: 192.168.32.27, password: "Haishen.123"}- {name: master2, address: 192.168.32.21, internalAddress: 192.168.32.170, password: "Haishen.123"}- {name: master3, address: 192.168.32.22, internalAddress: 192.168.32.36, password: "Haishen.123"}- {name: node1, address: 192.168.32.23, internalAddress: 192.168.32.227, password: "Haishen.123"}- {name: node2, address: 192.168.32.24, internalAddress: 192.168.32.230, password: "Haishen.123"}- {name: node3, address: 192.168.32.25, internalAddress: 192.168.32.247, password: "Haishen.123"}- {name: node4, address: 192.168.32.26, internalAddress: 192.168.32.121, password: "Haishen.123"}- {name: node5, address: 192.168.32.27, internalAddress: 192.168.32.130, password: "Haishen.123"}roleGroups:etcd:- master1- master2- master3control-plane:- master1- master2- master3worker:- master1- master2- master3- node[1:5]controlPlaneEndpoint:## Internal loadbalancer for apiserversinternalLoadbalancer: haproxydomain: lb.kubesphere.localaddress: ""port: 6443kubernetes:version: v1.23.10clusterName: cluster.localautoRenewCerts: truecontainerManager: dockeretcd:type: kubekeynetwork:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18## multus support. https://github.com/k8snetworkplumbingwg/multus-cnimultusCNI:enabled: falseregistry:privateRegistry: ""namespaceOverride: ""registryMirrors: []insecureRegistries: []addons:- name: nfs-clientnamespace: kube-systemsources:chart:name: nfs-client-provisionerrepo: https://charts.kubesphere.io/mainvaluesFile: /root/nfs-client.yaml

3. 一键安装

./kk create cluster -f config-sample.yaml

然后等待片刻。。

4. 安装完成

#####################################################
###              Welcome to KubeSphere!           ###
#####################################################Console: http://192.168.32.27:30880Account: adminPassword: P@88w0rdNOTES:

1. After you log into the console, please check the

monitoring status of service components in

the "Cluster Management". If any service is not

ready, please wait patiently until all components

are up and running.

2. Please change the default password after login.

#####################################################

https://kubesphere.io             2020-xx-xx xx:xx:xx

#####################################################

此时便安装完成了。

使用kubesphere管理k8s集群

通过上面的kubekey,我们不仅获得了一个k8s环境,同时也获得了一个图形化的k8s管理系统,kubesphere。

打开上一步我们获得的网址:http://192.168.32.27:30880

登录进去查看一下

对于k8s新手小白来说,有这样一套友好的安装步骤和图形化管理系统,将极大的减轻我们的认知负担,加快我们学习k8s的进度和提升我们的认知。

总结

以上便是k8s的急速安装步骤,是不是特别的简单呢。

如果有什么疑问,想了解更多,想学习如何使用k8s,欢迎关注我。

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

ChatGPT也不会的k8s安装方法——极简安装法 的相关文章

随机推荐

  • Spring Security,没有看起来那么复杂(附源码)

    权限管理是每个项目必备的功能 只是各自要求的复杂程度不同 简单的项目可能一个 Filter 或 Interceptor 就解决了 复杂一点的就可能会引入安全框架 如 Shiro Spring Security 等 其中 Spring Sec
  • margin:0 auto是什么意思

    margin是外边距的意 当一个元素样式属性里有dumargin 0 auto时 并且父元素的宽度是确定的 意思是这个元素处于其父元素的居中位置 并且这个元素的上下外边距为0 即 上下外边距为0 左右自动 实际效果为左右居中 补充 marg
  • 缺少msvcp120.dll、msvcr120.dll解决办法

    缺少msvcp120 dll msvcr120 dll解决办法 丢失或缺少msvcp120 dll msvcr120 dll等这些报错是因为我们没有安装vc 运行库 看一下报错对应的数字对应的版本 msvcp msvcr60 71和80 d
  • Python--内建函数大全

    Python 解释器内置了许多函数和类型 列表如下 按字母排序 省略了几个我没用过或者不常用的 内建函数表 abs delattr hash memoryview set
  • 结构体排序------蓝桥杯

    题目 给出 nn 个人的语文 数学 英语的成绩 你需要把他们的成绩降序输出 排序的规则 先按总分排序 如果总分相等 就按语文成绩降序排序 如果语文成绩还相等 就按数学成绩降序排序 如果数学成绩还相等 就按姓名字典序升序排序 输入 第一行是一
  • Python中MongoDB的使用方法

    一 MongoDB是什么 在百度上查询的时候主要看到三个关键字 数据库 非关系型 查询功能强大 总结为查询功能强大的非关系型数据库 什么是数据库 应该是用来存储数据的 非关系型的意思 不不不 关系型的意思我都不懂 查询功能强大的意思应该是查
  • python matplotlib pyplot绘制散点图

    pyplot散点图示例 import matplotlib pyplot as plt import numpy as np import math import random plt rcParams font sans serif Si
  • 【Blender】快捷键整理

    Z 弹出着色模式菜单 shift Z 线框展示 Ctrl 空格 最大化视窗切换 N 隐藏侧栏 T 显示隐藏左侧工具菜单 小键盘 在视口内最大化显示当前选择物体 FN home 在视口内最大化显示场景内所有物体 SHIFT C 查看全部 sh
  • N沟道和P沟道MOS管的四个不同点

    作者 快捷芯 功率半导体创新品牌 1 芯片材质不同 虽然芯片都是硅基 但是掺杂的材质是不同 使得N沟道MOS管是通过电子形成电流沟道 P沟道MOS管是用空穴流作为载流子 具体原理可以参考一些教科书 属于工艺方面的问题 2 同等参数P沟道MO
  • Upload-labs 1-21关 靶场通关攻略(全网最全最完整)

    Pass 01 前端验证 因为是进行前端JS校验 因此可以直接在浏览器检查代码把checkFile 函数 即如下图红色框选中的函数 删了或者也可以把红色框改成true 并按回车 即可成功上传php文件 复制图片地址并用蚁剑进行连接 Pass
  • Hiv练习题之网站连续登陆天数分析

    数据源 有如下登录信息 userId day 1 2019 05 01 1 2019 05 02 1 2019 05 03 1 2019 05 04 1 2019 05 05 1 2019 05 06 1 2019 05 07 1 2019
  • Leetcode28. 找出字符串中第一个匹配项的下标

    代码 class Solution public int strStr String haystack String needle if haystack equals needle return 0 int len needle leng
  • IDEA中创建单元测试过程 JUnit

    1 在src同级别下创意一个test目录 2 右键这个test文件夹 设置为测试专用文件夹 然后在在下面创建一个java目录 根据你的需求 多级建目录 3 选择一个类 比如xxxServiceImpl xxDaoImpl 然后邮件 选择go
  • synchronized关键字修饰static方法和非static方法学习测试结论

    最近在学习研究synchronized关键字 发现有个疑问 在同一个类中 有多个sync方法 当线程调用其中的一个方法的时候 其他的线程能调用其他的sync方法么 为此做了简单的测试 详细的测试过程略过 读者可使用测试代码自行操作 得出结论
  • OKHttp详解

    OkHttp 是一套处理 HTTP 网络请求的依赖库 由 Square 公司设计研发并开源 目前可以在 Java 和 Kotlin 中使用 对于 Android App 来说 OkHttp 现在几乎已经占据了所有的网络请求操作 RetroF
  • Web项目实战

    文章目录 运行环境 1 前言 2 挑选模板 2 1 前端模板 2 2 后端模板 2 3 总结 3 实现注册与登陆 3 1 项目结构 3 2 注册 3 2 1 JDBC连接池连接 3 2 2 dao层实现JDBC的判重 插入 3 2 3 设计
  • Linux字符设备驱动的register_chrdev()与unregister_chrdev()

    Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合 通过这些函数使得Windows的设备操作犹如文件一般 在应用程序看来 硬件设备只是一个设备文件 应用程序可以象操作普通文件一样对硬件设备进行操作 如open close rea
  • 【RDMA】RDMA编程入门--编辑中

    目录 一 前言 二 基本概念 1 队列和队列成员 2 传输模式 简介 单边双边传输流程简述 3 编程接口 verbs API 三 编程示例 工作大致流程说明 四 编程代码实例 5 RDMA编程概述 5 1 传输操作 5 2传输模式 5 3相
  • easyexcel分批次导出excel文件

    使用easyexcel进行分批次导出1000万条数据的步骤如下 首先 需要在pom xml文件中添加easyexcel的依赖 例如
  • ChatGPT也不会的k8s安装方法——极简安装法

    要学习k8s 首先要有一个k8s 那么如何才能获得一个k8s呢 这不由得让我想到了最近比较火的ChatGPT 以下简称小恰 俗话说 遇事不决问小恰 解决效率翻上翻 让我们先来看看小恰怎么回答的吧 问小恰 由于众所周知的原因 国内使用小恰比较