【K8S系列】快速初始化⼀个最⼩集群

这篇具有很好参考价值的文章主要介绍了【K8S系列】快速初始化⼀个最⼩集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【K8S系列】快速初始化⼀个最⼩集群

序言

走得最慢的人,只要不丧失目标,也比漫无目的地徘徊的人走得快。

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级重要
  • 蓝色:用来标记二级重要

希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流

写在前面 

k8s作为⼀个相对⽐较复杂的系统,它有⼀定的⼊⻔⻔槛,我曾浏览它的⽂档很多次,光是在安装的环节上就耗费很久,劝退指数极⾼,但是我们不需要⼀开始就花费很多的时间从安装开始接触它

所以我们可以借⽤Docker-Desktop快速启动⼀个本地化最⼩集群,能让我们快速上⼿演练,随着对k8s的理解加深,安装的部分也就迎刃⽽解了。

1 安装 

打开Docker-desktop,进⼊设置,可以看到有kubernetes选项,注意不同的docker版本,这⾥的k8s版本也有区别,

【K8S系列】快速初始化⼀个最⼩集群

你可以直接点击Enable的话,等一会,如果成功的话,就直接安装就行了,安装成功,可以看到这一个信息

安装成功 

【K8S系列】快速初始化⼀个最⼩集群

kubectl get nodes

【K8S系列】快速初始化⼀个最⼩集群

 不成功情况

如果不成功,⼤概率因为k8simage拉取问题,导致是⽆法启动的,所以这⾥要先解决镜像

可以从国内镜像源拉取,然后修改镜像名称,这样就可以了

⽐如这台电脑,⿊苹果由于系统版本10.15.7,⽀持的docker-desktop版本⽐较⽼⼀点,所以这⾥的k8s版本是v1.24.0,

修改镜像源 

下⾯就可以通过写好的脚本从阿⾥云拉取镜像,注意替换你的k8s版本,关于etcd,coredns的版本可以查⼀下ChatGPT,让它快速告诉你指定k8s对应的这两者的版本,或者保持不动,因为理论上这两个基础组件在1.24和1.25变化不⼤的,应该可以兼容:

#!/bin/bash

set -e
KUBE_VERSION=v1.24.0
KUBE_PAUSE_VERSION=3.5
ETCD_VERSION=3.4.13-0
COREDNS_VERSION=1.8.0
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
# get images
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${COREDNS_VERSION})
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
# show images
docker images

执⾏等待拉取完毕后检查⼀下,然后就可以点击Enable了,需要等待⼏分钟。

K8S显⽰运⾏成功后,你可以在shell中运⾏kubectl命令查看节点状态:

kubectl get nodes

【K8S系列】快速初始化⼀个最⼩集群

2 测试

部署Nginx

可以看到⼀个单节点的集群就运⾏起来了,下⾯我们简单跑⼀个development容器看⼀下集群⼯作状态是否正常,这⾥可以先不管这些yaml⽂件描述的什么,

部署 Deployment

可以使用Kubernetes来部署Nginx。以下是一个简单的Deployment示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        - containerPort: 443

解释一下上述的YAML文件:

  • kind: Deployment表示创建一个Deployment。
  • metadata.name指定Deployment的名称。
  • spec.replicas设置replica数量为1。
  • selector.matchLabels定义了应该匹配哪些Pod,使用app: nginx标签匹配。
  • template.metadata.labels为此Deployment创建一个独立的Pod。
  • spec.containers定义了一个名为nginx的容器,在此容器中运行Nginx镜像。
  • ports将容器的80公开。

执行以下命令创建Deployment:

kubectl apply -f deployment.yaml

在Kubernetes中使用kubectl get deployments命令可以看到Deployment已经成功创建了。我们还可以使用以下命令查看Pod运行状态:

kubectl get pods

如果一切正常,你应该能够看到类似下面的输出:

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6b67fd5895-p8qs8   1/1     Running   0          25s

部署service 

现在,Nginx已经在Kubernetes中以Deployment的方式部署好了。如果需要通过外部IP访问Nginx服务,还需要创建一个Service。

可以通过创建一个Service将Nginx服务暴露给集群外部IP。

以下是一个简单的Service示例,将Nginx Service暴露的端口设置为NodePort类型

使用NodePort类型的Service可以将集群内部的服务端口映射到集群外部的一个随机端口上:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30001
  type: NodePort

解释一下上述的YAML文件:

  • kind: Service表示创建一个Service。
  • metadata.name指定Service的名称。
  • spec.selector将Service绑定到定义了app: nginx标签的Pod列表。
  • spec.ports定义了Nginx服务的端口信息。
  • type: NodePort 表示Service类型为NodePort,将指定的端口暴露给集群外部IP以供访问。

执行以下命令创建Service:

kubectl apply -f service.yaml

现在,我们可以通过以下命令查看创建的Service:

kubectl get services

如果一切正常,你应该能够看到类似下面的输出:

NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
nginx-service   NodePort   10.108.90.45   <none>        80:30001/TCP

在上面的输出结果中, 30001 端口对应着Nginx的HTTP端口,

如果你使用的是云服务提供商的集群,可以找到具体的EXTERNAL-IP地址,然后在浏览器中输入 EXTERNAL-IP:30001 来访问Nginx服务。

如果你使用的是本地单节点的集群,可以在本地使用 localhost:30001  访问Nginx服务。

完整脚本:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        - containerPort: 443


---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30001
  type: NodePort

 执行命令

kubectl apply -f nginx.yml

【K8S系列】快速初始化⼀个最⼩集群

 图书推荐

图书名称:ChatGPT时代:ChatGPT全能应用一本通》

【K8S系列】快速初始化⼀个最⼩集群

内容简介

本书从ChatGPT等自然语言大模型基础知识讲起,重点介绍了ChatGPT等语言大模型在生活中的实际应用,让每一个人都能了解未来的生活和工作。

本书分为16章,涵盖的主要内容有人工智能、OpenAI、ChatGPT的介绍、ChatGPT的使用技巧,向大家展现ChatGPT在学术教育、商业管理、新媒体、办公、求职、法律、电商等不同领域的应用,以及ChatGPT当下的问题、大模型的未来。

本书通俗易懂,用最简单的语言解释人工智能的入门知识,案例丰富,实用性强,适合每一个想要了ChatGPT等自然语言处理大模型的读者和进阶爱好者阅读,也适合想要通过API打造新时代语言模型应用的开发者。

作者简介

江涵丰,10年科技行业从业者,科技/人工智能领域知名自媒体人。北美工商管理学硕士,获麻省理工人工智能与商业战略相关认证,注册供应链管理师。曾是硅谷科技企业运营管理层,后担任前亚洲第一科技展会CES Asia项目主管,拥有丰富的北美与国内科技行业市场研究、运营管理、数字营销等领域的理论基础和实战经验。

等不及的小伙伴。可以点击下方链接先睹为快

《ChatGPT时代:ChatGPT全能应用一本通 》

参与方式

图书数量本次送出 3 本   !!!⭐️⭐️⭐️
活动时间:截止到 2023-05-16 12:00:00

抽奖方式:

  • 2本留言+该留言论赞数的前两名各获得一本!
  • 1本评论区随机挑选一位小伙伴送书一本!
  • 留言内容:“时间永远是旁观者,所有的过程和结果,都需要我们自己去承担。


参与方式:关注博主、点赞、收藏,评论区留言 

中奖名单 

🍓🍓 获奖名单🍓🍓

 中奖名单:请关注博主动态

名单公布时间:2023-05-16 下午

中奖用户:
【评论点赞前2名】
1.[30👍🏻]几分醉意.@几分醉意.⭐️⭐️⭐️
1.[29👍🏻]陈老老老板@陈老老老板⭐️⭐️
【随机抽取】
3.Anitalin00@Anitalin00⭐️

恭喜以上中奖的小伙伴,请及时联系博主!!😁😁😁

为防止错过中奖信息,可根据文章底部信息添加博主,添加时请备注csdn-[昵称]文章来源地址https://www.toymoban.com/news/detail-443437.html

到了这里,关于【K8S系列】快速初始化⼀个最⼩集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过containerd部署k8s集群环境及初始化时部分报错解决

    目录 一.基础环境配置(每个节点都做) 1.hosts解析 2.防火墙和selinux 3.安装基本软件并配置时间同步 4.禁用swap分区 5.更改内核参数 6.配置ipvs 7.k8s下载 (1)配置镜像下载相关软件 (2)配置kubelet上的cgroup 二.下载containerd(每个节点都做) 1.下载基本软件 2.添加软件仓库信息 3.更

    2024年02月07日
    浏览(48)
  • [Kubernetes[K8S]集群:master主节点初始化]:通过Calico和Coredns网络插件方式安装

    主节点:安装coredns - init初始化 主节点(此时还没有安装calico) 从节点:基于主节点生成join命令加入集群 主节点:安装calico:apply 生成pod,此时没有调整yaml网卡 coredns 和calico pod 运行成功 但是 calico-node-cl8f2 运行失败 查看 解决链接 因为之前写过一篇,calico一直异常,步骤

    2024年04月15日
    浏览(53)
  • 初始化k8s(启动)

    一位普通的程序员,慢慢在努力变强! 温馨提示:初始化k8s的前置配置,请查看以下连接! k8s初始化前的基础配置 提示:如果你是单机,需要开启污点 本章节完成了,各位正在努力的程序员们,如果你们觉得本文章对您有用的话,或者是你学到了一些东西,希望用您那漂亮

    2024年02月11日
    浏览(51)
  • 云计算(一)K8S初始化问题

            作者公司使用的是K8S底层做云计算,这天有个节点发布的时候卡住了,解决方式分为长短期。                作者跟运维做了一些分析讨论和解决方案,涉及到许多K8S相关的知识,有兴趣的同学可以看看这个原理分析过程。     云计算是一种基于互联网的计算

    2024年02月04日
    浏览(48)
  • K8s-k8s集群部署-6-主节点初始化和calico安装

    本文章属个人学习整理的对应笔记,学习内容来尚硅谷的培训课,有兴趣的同学可以跳转下方链接 【云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps】https://www.bilibili.com/video/BV13Q4y1C7hS?p=71vd_source=08192e8d3b82bf20dfe6807a2901dd9e kubeadm init   --apiserver-advertise-address=192.168.181.100   --

    2024年02月22日
    浏览(49)
  • SpringBoot集成kubernetes-client升级k8s后初始化失败问题

    SpringBoot集成kubernetes-client升级k8s后初始化失败问题 1.问题描述 程序以前使用的k8s版本是1.16,fabric8.kubernetes-client的版本是4.10.2,springboot版本是2.3.5。由于环境切换,这次需要升级k8s的版本,现在将k8s版本升级到了1.26,程序中使用了新配置的certificate-authority-data,client-certific

    2024年02月10日
    浏览(50)
  • k8s初始化报错:[ERROR CRI]: container runtime is not running(已解决)

    如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!          在网上找了好几天解决方案,大部分都是下述方案:         但是当我们尝试之后仍无法解决问题。 如有错误,请联系作者删除 并恳请同行朋友予以斧正,万分感谢!

    2024年02月07日
    浏览(53)
  • k8s初始化报错[kubelet-check] Initial timeout of 40s passed.

    使用kubeadm进行k8s部署,在初始化的时候,遇到如下 一直卡在了[kubelet-check] Initial timeout of 40s passed.,查看kubelet日志 就出现这个错误,我几个node的IP地址检查过好多遍也没问题 上网找了很多方法都解决不了 查了下资料k8s 已经弃用了docker了,如果安装的kubelet kubeadm kubectl 是V

    2024年02月17日
    浏览(49)
  • 记Kubernetes(k8s)初始化报错:“Error getting node“ err=“node \“k8s-master\“ not found“

    💖The Begin💖点点关注,收藏不迷路💖 \\\"Error getting node\\\" err=\\\"node \\\"k8s-master\\\" not found\\\" 查看日志报错: [root@k8s-master ~]# journalctl -u kubelet 1、操作系统centos7.9 2、docker 版本检查 3、kubelet 版本检查 查找资料: Kubernetes在v1.24版本之后正式放弃了对Docker的支持。这意味着Kubernetes的官方

    2024年04月14日
    浏览(50)
  • 如果遇见k8s初始化报错:It seems like the kubelet isn‘t running or healthy.

    报错命令如下: 其解决方法: 进入docker配置文件: 添加: #这里需要注意的这里是字典,然后需要在配置前面一句加上逗号 最后重启docker和 然后重新初始化: 我这里重新初始化再一次报错 报错主要代码: 报错全部内容 : 我一看应该是初始化阿里源有个地方不对,通过摸索

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包