k8s入门:从安装到实际应用

Kubernetes (K8s) 入门指南:从安装到实际应用

Kubernetes 是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。它能帮助你管理多个容器化应用程序,并确保它们在不同环境下的一致性和可用性。本文将介绍如何在本地环境安装 Kubernetes 并进行简单的应用部署。

一、安装 Kubernetes

Kubernetes 的安装可以通过多种方式完成,以下是几种常见的安装方法:

1. 使用 Minikube 安装 Kubernetes

Minikube 是一个工具,可以在本地运行单节点 Kubernetes 集群,适合开发和测试使用。

步骤:

  1. 安装 Minikube:

    • 在 Linux 上:

      curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
      sudo install minikube /usr/local/bin/
      
    • 在 macOS 上:

      brew install minikube
      
    • 在 Windows 上:

      下载 Minikube 并将其添加到系统路径。

  2. 安装 kubectl:

    kubectl 是 Kubernetes 的命令行工具,用于管理 Kubernetes 集群。

    • 在 Linux 上:

      curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
      chmod +x ./kubectl
      sudo mv ./kubectl /usr/local/bin/kubectl
      
    • 在 macOS 上:

      brew install kubectl
      
    • 在 Windows 上:

      下载 kubectl 并将其添加到系统路径。

  3. 启动 Minikube:

 #安装相关依赖yum install -y conntrack git wget golangVERSION="v1.30.0"wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gztar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bingit clone https://github.com/Mirantis/cri-dockerd.gitcd cri-dockerdmkdir bingo get && go build -o bin/cri-dockerdmv bin/cri-dockerd /usr/local/bin/wget https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.service -O /etc/systemd/system/cri-docker.servicewget https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.socket -O /etc/systemd/system/cri-docker.socketsudo systemctl daemon-reloadsudo systemctl enable cri-docker.servicesudo systemctl enable cri-docker.socketsudo systemctl start cri-docker.servicesudo systemctl start cri-docker.socket
#启动minikube
minikube start
  1. 验证安装:

    kubectl get nodes
    

    如果安装成功,你应该会看到一个名为 minikube 的节点。

2. 使用 Kind 安装 Kubernetes

Kind (Kubernetes IN Docker) 是另一个适合本地开发的 Kubernetes 集群工具,通过 Docker 容器运行 Kubernetes 集群。

步骤:

  1. 安装 Kind:

    • 在 Linux 和 macOS 上:

      curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
      chmod +x ./kind
      sudo mv ./kind /usr/local/bin/kind
      
    • 在 Windows 上:

      下载 Kind 并将其添加到系统路径。

  2. 创建 Kubernetes 集群:

    kind create cluster
    
  3. 验证安装:

    kubectl cluster-info --context kind-kind
    
二、部署应用到 Kubernetes

一旦 Kubernetes 集群启动并运行,你可以开始部署应用程序。以下是一个简单的 Nginx 应用部署示例:

  1. 创建 Nginx Deployment:

    Deployment 用于声明应用的期望状态,Kubernetes 将确保实际状态匹配声明的期望状态。

    kubectl create deployment nginx --image=nginx
    
  2. 暴露 Nginx 服务:

    Service 用于将 Deployment 暴露为一个网络服务。

    kubectl expose deployment nginx --port=80 --type=NodePort
    
  3. 查看服务信息:

    kubectl get services
    

    你将看到类似以下的输出,其中 PORT(S) 显示了服务暴露的端口:

    NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    nginx        NodePort    10.96.0.1      <none>        80:PORT/TCP    1m
    
  4. 访问 Nginx 应用:

    在浏览器中访问 http://<Node_IP>:<PORT>,其中 <Node_IP> 是集群节点的 IP 地址,<PORT> 是上一步中显示的端口。

三、管理 Kubernetes 应用

Kubernetes 提供了丰富的功能来管理和扩展你的应用程序:

  1. 扩展 Deployment:

    可以使用以下命令扩展 Nginx 部署的副本数:

    kubectl scale deployment nginx --replicas=3
    
  2. 更新 Deployment:

    可以使用以下命令滚动更新 Nginx 部署:

    kubectl set image deployment/nginx nginx=nginx:latest
    
  3. 查看 Deployment 状态:

    使用以下命令查看 Deployment 的状态:

    kubectl get deployments
    
  4. 查看 Pod 日志:

    使用以下命令查看 Pod 的日志:

    kubectl logs <pod_name>
    
四、常见的 Kubernetes 资源类型
  • Pod:Kubernetes 中最小的部署单元,包含一个或多个容器。
  • Service:用于定义 Pod 的网络访问策略。
  • Deployment:用于声明应用的期望状态,支持滚动更新和回滚。
  • ConfigMap 和 Secret:用于管理应用配置和敏感信息。
  • PersistentVolume (PV) 和 PersistentVolumeClaim (PVC):用于管理持久存储。

总结

本文介绍了如何在本地安装 Kubernetes 并部署一个简单的 Nginx 应用。Kubernetes 是一个功能强大的平台,提供了丰富的功能来管理和扩展容器化应用程序。通过掌握本文介绍的基本概念和操作,你可以开始探索 Kubernetes 的更多高级功能,以满足实际应用的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有关环境变量

JDK全称Java Development Kit 中文意思是Java 开发工具包 JDK包括 jre (Java Runtime Environment) Java 运行环境&#xff0c;一堆Java工具和Java基础的类库 vim hello.java 写个hello在运行它&#xff0c;看jdk是否可以使用SVG&#xff08;Scalable Vector Graphics&#xf…

在golang中Sprintf和Printf 的区别

最近一直在学习golang这个编程语言&#xff0c;我们这里做一个笔记就是 Sprintf和Printf 的区别 fmt.Sprintf 根据格式化参数生成格式化的字符串并返回该字符串。 fmt.Printf 根据格式化参数生成格式化的字符串并写入标准输出。由上面就可以知道&#xff0c;fmt.Sprintf返回的…

php随机海量高清壁纸系统源码,数据采集于网络,使用很方便

2022 多个分类随机海量高清壁纸系统源码&#xff0c;核心文件就两个&#xff0c;php文件负责采集&#xff0c;html负责显示&#xff0c;很简单。做流量工具还是不错的。 非第三方接口&#xff0c;图片数据采集壁纸多多官方所有数据&#xff01; 大家拿去自行研究哈&#xff0…

在 Windows 上开发.NET MAUI 应用_2.生成你的第一个应用

先决条件 Visual Studio 2022 17.8 或更高版本&#xff0c;并安装了 .NET Multi-platform App UI 工作负载。 可参考上一篇文章&#xff1a;http://t.csdnimg.cn/n38Yy 创建应用 1.启动 Visual Studio 2022。 在开始窗口中&#xff0c;单击“创建新项目”以创建新项目&#…

docker pull 拉取失败更换源

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.conf <<EOF { "registry-mirrors": ["https://do.nark.eu.org"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 然后出现下面的错误 Cannot connect to the Docke…

【B树、B-树、B+、B*树】

目录 一、B-树&#xff08;即B树&#xff09;的定义及操作1.1、定义1.2、操作1.2.1、查找1.2.2、插入1.2.3、删除 二、B树的定义及操作2.1、定义2.2、操作2.2.1、查找2.2.2、插入2.2.3、删除 三、B*树 一、B-树&#xff08;即B树&#xff09;的定义及操作 1.1、定义 B-tree即…

【c++11】什么情况下需要封装set/get

文章目录 一、平凡类型与非平凡类型什么时候使用set/get1.平凡类型2.非平凡类型 二、构造函数参数较多解决办法1.把所有参数放到一个结构体里面2.使用build设计模式 三、如果构造函数众多&#xff08;参数很多&#xff09;1.模仿make_unique&#xff0c;就地构造2.基于build设计…

Missing script:‘dev‘

场景&#xff1a; npm run dev 原因&#xff1a;没有安装依赖&#xff0c;可用镜像安装&#xff08;详见下图ReadMe 蓝色字体&#xff09;&#xff0c;没安装依赖可从package-lock.json文件是否存在看出&#xff0c;存在则有依赖 解决&#xff1a;

二叉树、B树/B-树

二叉树 在中文语境中,节点结点傻傻分不清楚,故后文以 node 代表 "结点",root node 代表根节点,child node 代表 “子节点” 二叉树是诸多树状结构的始祖,至于为什么不是三叉树,四叉树,或许是因为计算机只能数到二吧,哈哈,开个玩笑。二叉树很简单,每个 no…

useState函数

seState是一个react Hook(函数)&#xff0c;它允许我们像组件添加一个状态变量&#xff0c;从而控制影响组件的渲染结果 数据驱动试图 本质&#xff1a;和普通JS变量不同的是&#xff0c;状态变量一旦发生变化组件的视图UI也会随着变化(数据驱动试图) 使用 修改状态 注意&am…

中介子方程六十

XXFXXaXnXaXXαXLXyXXWXuXeXKXXiXyXΣXXΣXXVXuXhXXWXηXXiXhXXpXiXXpXXbXXiXOXWXyXkXXeXpXXOXXiXnXWXXiX$XpXXiXαXhXZXWXX$XpX$XWX$XXbXX$XWX$XpX$XXWXZXhXαXiXXpX$XiXXWXnXiXXOXXpXeXXkXyXWXOXiXXbXXpXXiXpXXhXiXXηXWXXhXuXVXXΣXXΣXyXiXXKXeXuXWXXyXLXαXXaXnXaXXFXXaXn…

用python写一个tcp/ip协议的聊天软件

编写一个基于TCP/IP协议的简单聊天软件&#xff0c;可以让多个客户端连接到服务器&#xff0c;实现简单的文本消息收发功能。下面是一个基本的示例&#xff0c;涵盖了服务器端和客户端的实现。 服务器端&#xff08;chat_server.py&#xff09; 服务器端负责接收客户端的连接&…

单链表算法 - 链表分割

链表分割_牛客题霸_牛客网现有一链表的头指针 ListNode* pHead&#xff0c;给一定值x&#xff0c;编写一段代码将所有小于x的。题目来自【牛客题霸】https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70思路: 代码: /* struct ListNode {int val;struct List…

英福康INFICON TranspectorWare v3 RGA软件操作说明

英福康INFICON TranspectorWare v3 RGA软件操作说明

Python一对一辅导答疑|Rust 德国

你好&#xff0c;我是悦创。 下面是答疑内容。 在 Rust 中&#xff0c;方法的调用方式通常取决于它们是如何定义的。在你的例子中&#xff0c;print_drink方法最初是作为一个接受Drink类型实例作为参数的关联函数&#xff08;类似于静态方法&#xff09;定义的。后来&#xff…

Python应用—从pdf中保存图片

import fitz # PyMuPDFdef extract_images_from_pdf(pdf_path, output_folder):# 打开PDF文件doc fitz.open(pdf_path)# 遍历PDF的每一页for page_number in range(len(doc)):# 获取当前页page doc[page_number]# 遍历页面中的所有图片for img_index, img in enumerate(page…

供应链管理(SCM):如何在颜值和体验上发力

要在供应链管理系统&#xff08;SCM&#xff09;中在颜值和体验上发力&#xff0c;让用户感觉耳目一新&#xff0c;可以采取以下措施&#xff1a; 界面设计优化&#xff1a; 对供应链管理系统的界面进行优化&#xff0c;注重界面的美观、简洁和易用性。采用现代化的设计风格、…

.Net--CLS,CTS,CLI,BCL,FCL

1.什么是CLS&#xff1f; 所以.NET专门为此参考每种语言(例如C# &#xff0c;VB&#xff0c;F#)并找出了语言间的共性&#xff0c;然后定义了一组规则&#xff0c;开发者都遵守这个规则来编码&#xff0c;那么代码就能被任意.NET平台支持的语言所通用。 而与其说是规则&#x…

技能 | postman接口测试工具安装及使用

哈喽小伙伴们大家好!今天来给大家分享一款轻量级,高效好用的接口测试工具-postman. Postman是一个流行的API开发工具&#xff0c;主要用于测试、开发和文档化API。以下是关于Postman的介绍及其主要使用场景&#xff1a; Postman介绍&#xff1a; 1. 功能丰富的API客户端&#…

langchain 入门指南(二)- 如何跟大模型对话

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 本文中&#xff0c;我们会通过一个简单的例子来展示如何使用 langchain 来调用大模型的 chat API&#xff08;使用 Chat Model&#xff…