比ChatGPT4还简单的K8S安装方式

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
全局流量管理 GTM,标准版 1个月
简介: 最近ChatGPT4又是火了一把, 但是ChatGPT4毕竟不是人脑, 像环境安装能否一键操作,还是要靠人力实现哦, 比方说我们运维使用的K8S!

比ChatGPT4还简单的K8S安装方式

运维方面要学习k8s,首先要有一个k8s。那么如何才能获得一个k8s呢?
这不由得让我想到了最近比较火的小恰(chatGPT)
俗话说,遇事不决问小恰(chatGPT),让我们先来看看小恰怎么回答的吧。

问小恰ChatGPT ?

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

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


# 安装
go install github.com/xavierxcn/chatgo@latest

# 设置openai token
chatgo set <your-token>

1.开启一个对话

chatgo chat

init robot...
init robot success.

> 你叫什么名字
chatgo: 
我叫ChatGo,很高兴能够为你服务!有什么可以帮到你的吗?

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

> 如何快速安装k8s ?

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

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


> 请告诉我详细的安装过程和需要执行的命令              
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 update
sudo 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/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo 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 集群!

4.好吧,以上就是ChatGPT返回的结果了, 看来小恰也只会这些了。

这显然不是我们想要的。

接下来看我们如何快速安装K8S哦 O(∩_∩)O哈哈~

1.使用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-amd64
chmod +x ./kind
sudo 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=nginx
kubectl expose deployment nginx --port=80 --type=LoadBalancer

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

4. 销毁集群

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

kind delete cluster --name mycluster

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

5.使用kubekey安装生产环境

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

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

    1. 安装kubekey
curl -sfL https://get-kk.kubesphere.io | sh -
chmod +x kk
    1. 创建并编译k8s集群的配置
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  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
    - master3
    control-plane:
    - master1
    - master2
    - master3
    worker:
    - master1
    - master2
    - master3
    - node[1:5]
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    internalLoadbalancer: haproxy
    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.23.10
    clusterName: cluster.local
    autoRenewCerts: true
    containerManager: docker
  etcd:
    type: kubekey
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    privateRegistry: ""
    namespaceOverride: ""
    registryMirrors: []
    insecureRegistries: []
  addons:
  - name: nfs-client
    namespace: kube-system
    sources:
      chart:
        name: nfs-client-provisioner
        repo: https://charts.kubesphere.io/main
        valuesFile: /root/nfs-client.yaml
    1. 一键安装
./kk create cluster -f config-sample.yaml

然后等待片刻

    1. 安装完成
#####################################################

###              Welcome to KubeSphere!           ###

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

Console: http://192.168.32.27:30880

Account: admin

Password: P@88w0rd

NOTES:

  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.66.27:30880
Untitled.png

登录进去查看一下

Untitled 1.png

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

总结

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
51 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
15天前
|
Kubernetes Ubuntu Linux
我应该如何安装Kubernetes
我应该如何安装Kubernetes
|
1月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
164 1
|
1月前
|
Kubernetes Linux 开发工具
centos7通过kubeadm安装k8s 1.27.1版本
centos7通过kubeadm安装k8s 1.27.1版本
|
1月前
|
Kubernetes Docker 容器
rancher docker k8s安装(一)
rancher docker k8s安装(一)
41 2
|
1月前
|
Kubernetes 网络安全 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
226 2
|
1月前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
30 1
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
57 1
|
1月前
|
Kubernetes 监控 调度
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
|
1月前
|
缓存 Kubernetes 应用服务中间件
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
下一篇
无影云桌面