首页 > 其他分享 >【K8S系列】快速初始化⼀个最⼩集群

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

时间:2024-01-11 13:15:07浏览次数:30  
标签:初始化 Service Nginx nginx VERSION 集群 Deployment ChatGPT K8S

 

 

序言

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

文章标记颜色说明:

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

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

写在前面 

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

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

1 安装 

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

 

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

安装成功 

 

kubectl get nodes
 

 不成功情况

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

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

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

修改镜像源 

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

  1.   #!/bin/bash
  2.    
  3.   set -e
  4.   KUBE_VERSION=v1.24.0
  5.   KUBE_PAUSE_VERSION=3.5
  6.   ETCD_VERSION=3.4.13-0
  7.   COREDNS_VERSION=1.8.0
  8.   GCR_URL=k8s.gcr.io
  9.   ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
  10.   # get images
  11.   images=(kube-proxy:${KUBE_VERSION}
  12.   kube-scheduler:${KUBE_VERSION}
  13.   kube-controller-manager:${KUBE_VERSION}
  14.   kube-apiserver:${KUBE_VERSION}
  15.   pause:${KUBE_PAUSE_VERSION}
  16.   etcd:${ETCD_VERSION}
  17.   coredns:${COREDNS_VERSION})
  18.   for imageName in ${images[@]} ; do
  19.   docker pull $ALIYUN_URL/$imageName
  20.   docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
  21.   docker rmi $ALIYUN_URL/$imageName
  22.   done
  23.   # show images
  24.   docker images

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

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

kubectl get nodes
 

2 测试

部署Nginx

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

部署 Deployment

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

  1.   apiVersion: apps/v1
  2.   kind: Deployment
  3.   metadata:
  4.   name: nginx-deployment
  5.   spec:
  6.   replicas: 1
  7.   selector:
  8.   matchLabels:
  9.   app: nginx
  10.   template:
  11.   metadata:
  12.   labels:
  13.   app: nginx
  14.   spec:
  15.   containers:
  16.   - name: nginx
  17.   image: nginx:latest
  18.   ports:
  19.   - containerPort: 80
  20.   - 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
 

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

  1.   NAME READY STATUS RESTARTS AGE
  2.   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可以将集群内部的服务端口映射到集群外部的一个随机端口上:

  1.   apiVersion: v1
  2.   kind: Service
  3.   metadata:
  4.   name: nginx-service
  5.   spec:
  6.   selector:
  7.   app: nginx
  8.   ports:
  9.   - name: http
  10.   protocol: TCP
  11.   port: 80
  12.   targetPort: 80
  13.   nodePort: 30001
  14.   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
 

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

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

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

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

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

完整脚本:

  1.   apiVersion: apps/v1
  2.   kind: Deployment
  3.   metadata:
  4.   name: nginx-deployment
  5.   spec:
  6.   replicas: 1
  7.   selector:
  8.   matchLabels:
  9.   app: nginx
  10.   template:
  11.   metadata:
  12.   labels:
  13.   app: nginx
  14.   spec:
  15.   containers:
  16.   - name: nginx
  17.   image: nginx:latest
  18.   ports:
  19.   - containerPort: 80
  20.   - containerPort: 443
  21.    
  22.    
  23.   ---
  24.   apiVersion: v1
  25.   kind: Service
  26.   metadata:
  27.   name: nginx-service
  28.   spec:
  29.   selector:
  30.   app: nginx
  31.   ports:
  32.   - name: http
  33.   protocol: TCP
  34.   port: 80
  35.   targetPort: 80
  36.   nodePort: 30001
  37.   type: NodePort

 执行命令

kubectl apply -f nginx.yml
 

 图书推荐

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

 

内容简介

 

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

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

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

 

作者简介

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

 

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

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

参与方式

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

抽奖方式:

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


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

中奖名单 

标签:初始化,Service,Nginx,nginx,VERSION,集群,Deployment,ChatGPT,K8S
From: https://www.cnblogs.com/py169/p/17958338

相关文章

  • 【K8S系列】如何高效查看 k8s日志
     序言你只管努力,其他交给时间,时间会证明一切。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点Kubernetes(k8s)是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s日志查看相关方法希望这篇文章......
  • k8s集群Node节点管理:节点信息查看及节点label标签管理
    k8s集群Node节点管理:节点信息查看及节点label标签管理Kubernetes集群Node管理一、查看集群信息[root@k8s-master1~]#kubectlcluster-infoKubernetescontrolplaneisrunningathttps://192.168.10.100:6443CoreDNSisrunningathttps://192.168.10.100:6443/api/v1......
  • [Cisco ASAv] 思科自适应安全虚拟设备 (ASAv)部署与初始化配置(含ASDM)
    CiscoASAv是什么设备?CiscoASAv(AdaptiveSecurityVirtualAppliance)是思科公司提供的一种虚拟化网络安全解决方案。它是基于CiscoASA(AdaptiveSecurityAppliance)硬件防火墙的软件实现,旨在提供类似于物理ASA设备的网络安全功能。ASAv以虚拟机(VM)的形式部署在虚拟化平台上,如VMwar......
  • 快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系
    快速掌握服务网格系列二:云原生、K8S、服务网格(ServiceMesh)及微服务之间的关系首先看下CNCF对云原生的定义:Cloudnativetechnologiesempowerorganizationstobuildandrunscalableapplicationsinmodern,dynamicenvironmentssuchaspublic,private,andhybridcl......
  • TiDB 多集群告警监控-中章-融合多集群 Grafana
    author:longzhuquan背景随着公司XC改造步伐的前进,越来越多的业务选择TiDB,由于各个业务之间需要物理隔离,避免不了的TiDB集群数量越来越多。虽然每套TiDB集群均有两个详细的监控Dashboard、Grafana,但对于运维来说几十套集群的监控、告警、巡检均需消耗巨大的精力。上篇介绍了监......
  • TiDB 多集群告警监控-初章-监控融合、自动告警处理
    author:longzhuquan背景随着公司XC改造步伐的前进,越来越多的业务选择TiDB,由于各个业务之间需要物理隔离,避免不了的TiDB集群数量越来越多。虽然每套TiDB集群均有两个详细的监控Dashboard、Grafana,但对于运维来说几十套集群的监控、告警、巡检均需消耗巨大的精力。“融合......
  • 移动护理系统-ZooKeeper单机和集群方式安装部署
    1.1zookeeper安装1.下载地址http://mirror.bit.edu.cn/apache/zookeeper/选择版本,我选择的是注意:下载新版本的时候需要下载带bin的,因为有时候会报错错误:找不到或无法加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain你下载使用的zk是未编译的apache-zookeep......
  • rancher集群获取k8s的token
    一、概述在使用Kubernetes(简称K8S)集群进行容器编排时,我们需要使用Token来进行身份认证和访问控制。Rancher是一个开源的容器管理平台,可以帮助我们快速构建和管理K8S集群。本文将介绍如何在Rancher集群中获取K8S的Token。二、步骤概览下表展示了获取K8SToken的步骤概览:步骤操作1登......
  • rancher集群获取k8s的token
    你好,新入行的小伙伴!欢迎来到K8S的世界。今天,我将带你了解如何在Rancher集群中获取Kubernetes(K8s)的Token。这个过程可能会有些复杂,但别担心,我会尽可能地详细解释每一步。一、了解整体流程在开始之前,我们先大致了解一下整个流程。以下是获取KubernetesToken的基本步骤:登录到Rancher......
  • k8s卷管理-1
    目录卷管理-11.本地存储1.1emptyDir1.2hostPath网络存储搭建NFS服务器使用NFS网络存储搭建iSCSI服务器使用iSCSI网络存储卷管理-1我们之前创建的Pod是没有做存储的,那么这个Pod产生的数据文件都是会随着Pod的删除而删除,不能做到数据持久存储,现在开始看卷管理,通过定义volume,然......