当前位置: 首页 > news >正文

Kubernetes入门学习

Kubernetes入门学习

Kubernetes简介

Kubernetes(简称K8s)是Google开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一个可移植、可扩展的开源平台来管理容器化的工作负载和服务。
k8s 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由 Google 开发,现由 Cloud Native Computing Foundation(CNCF)维护。k8s 的目标是简化应用程序的部署和管理,提供弹性、可扩展、高可用的服务。

Kubernetes 以容器技术(例如 Docker)作为应用的基础构建单元。容器作为一种轻量级的虚拟化方案,能够将应用及其运行依赖打包至一个独立、可移植的运行环境中。借助容器技术,开发人员可以实现应用与底层运行环境的隔离,并达成快速部署与跨平台运行的目标。

Kubernetes 提供了一系列完善的功能,用于支撑容器化应用的全生命周期管理。其核心组件与概念包括:
​​Pod​​:作为 Kubernetes 中最小的调度单元,Pod 可封装一个或多个容器,这些容器共享网络和存储资源。Pod 为内部容器间的通信与协同工作提供了运行环境。

​​Deployment​​:用于定义应用的目标状态,并负责维护和管理 Pod 的多个副本。它支持滚动升级、版本回退以及根据负载自动扩缩容等运维操作。

​​Service​​:为一组 Pod 提供稳定的访问入口及网络策略定义。Service 可通过负载均衡机制,将外部请求分发至所属的多个 Pod 实例。

​​Namespace​​:通过逻辑隔离的方式将集群资源划分为多个虚拟集群。不同的命名空间可设置独立的资源配额与访问权限控制。

​​Volume​​:提供数据持久化存储的抽象层,支持在多个 Pod 之间共享数据或实现数据的持久化保存。Kubernetes 兼容多种存储类型,包括本地存储和网络存储等。

核心概念

namespace

关键命令为:

#获取所有ns
kubectl get ns#创建ns
kubectl create ns ns名称#删除ns
kubectl delete ns ns名称

Pod

Pod是Kubernetes中最小的可部署单元,包含一个或多个容器。

apiVersion: v1
kind: Pod
metadata:name: nginx-podlabels:app: nginx
spec:containers:- name: nginximage: nginx:1.21ports:- containerPort: 80

关键命令为:

# 创建Pod
kubectl apply -f pod.yaml# 查看所有Pod
kubectl get pods# 查看特定命名空间的Pod
kubectl get pods -n kube-system# 查看Pod详细信息
kubectl describe pod <pod-name># 查看Pod日志
kubectl logs <pod-name># 查看Pod IP
kubectl get pod -o wide# 实时查看日志
kubectl logs -f <pod-name># 进入Pod容器
kubectl exec -it <pod-name> -- /bin/bash # windows desktop进入Pod容器
kubectl exec -it <pod-name> -- bash # 删除Pod
kubectl delete pod <pod-name>

Deployment

Deployment为Pod和ReplicaSet提供声明式更新。

my-deploy.yaml文件内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:name: tomcat-deploylabels:run: tomcat-deploy
spec:replicas: 2selector:matchLabels:app: tomcat-deploytemplate:metadata:labels:app: tomcat-deployspec:containers:- image: tomcat:8.5.92name: tomcat

关键命令为:

# 命令行创建
kubectl create deployment tomcat --image=tomcat:8.5.92# yaml格式创建
kubectl apply -f my-deploy.yaml# 查看deploy
kubectl get deploy

依次运行命令如下:
运行截图

Service

Service定义了一种访问Pod的方式,提供稳定的网络端点。

my-service.yaml文件如下:

apiVersion: v1
kind: Service
metadata: name: my-service
spec:selector:app: tomcat-deploy  	# 需要与deployment的标签匹配ports:- protocol: TCPport: 8080targetPort: 8080type: NodePort

关键命令为:

# 查看所有Service
kubectl get services# 查看Service详细信息
kubectl describe service <service-name># 暴露Deployment为Service
kubectl expose deployment <deployment-name> --type=NodePort --port=80# 删除svc
kubectl delete svc svc-name

依次运行命令如下:

8080为集群内部访问端口,30596为外部访问端口, type: NodePort时外部环境才可以访问
在这里插入图片描述

ConfigMap

在 k8s 中,ConfigMap 是一种用于存储应用程序配置数据的对象。它允许将配置信息与应用程序分离,从而实现配置的解耦和管理的集中化。ConfigMap 是以键值对的形式存储配置数据的,可以包含一个或多个键值对。这些配置数据可以包含环境变量、命令行参数、配置文件等。ConfigMap 的数据可以通过环境变量、命令行参数或挂载文件的方式注入到 Pod 中的容器中。ConfigMap 可以通过 kubectl 命令行工具、YAML 文件或 API 进行创建和管理。可以在命名空间级别或集群级别创建 ConfigMap,并将其应用于特定的 Pod、Deployment、StatefulSet 等对象。

my-redis.conf 文件内容如下:

appendonly yes
requirepass 123456

依次运行命令如下:

# 创建ConfigMap
kubectl create cm redis-configmap --from-file = my-redis.conf# 查看cm
kubectl get cm

在这里插入图片描述
redis-cm.yaml 文件如下:

apiVersion: v1
kind: Pod
metadata:name: redis-configmap
spec:containers:- name: redis02image: redis:7.0.15command:- redis-server- "/redis-master/redis.conf"ports:- containerPort: 6379volumeMounts:- mountPath: /dataname: redis-data- mountPath: /redis-mastername: configvolumes:- name: redis-dataemptyDir: {}- name: configconfigMap:name: redis-cmitems:- key: my-redis.confpath: redis.conf

依次运行命令如下:
在这里插入图片描述
进入容器内部,查看redis.conf文件内容:
在这里插入图片描述
注意: 在基于windows desktop 拉取镜像有时候拉取失败,可以更换镜像源如下:

{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ml91x5p1.mirror.aliyuncs.com"]
}

参考学习文章: k8s参考文章1

http://www.dtcms.com/a/538402.html

相关文章:

  • 大模型学习2
  • 【论文学习与撰写】Mathtype的安装与word插件安装
  • 小企业网站建设的基础知识小型企业做网站的价格
  • 怀化本地网站网站如何做免费推广
  • 网站适配怎么做主机如何做服务器建网站
  • 网站网页设计培训百度站长平台网址
  • 门户网站 管理系统网络营销导向企业网站建设的一般原则
  • 南京做网站找哪家4399网页游戏大全
  • 邵阳优秀网站建设网站友情链接自动上链
  • 好网站你知道的大数据抓取客户软件
  • 做装修公司的网站通栏式网站
  • 网站卖东西怎么做wordpress 用户登录
  • winform实现计算器-保姆级教程
  • 动漫网站实现功能韩国能否出线
  • 个人网站毕业设计作品wordpress主题谷歌字体
  • 算法入门:专题攻克二---滑动窗口3(将x减到0的最小操作数,水果成篮)
  • 网站建设加盟创业做苗木网站哪家做得好
  • 安徽 两学一做 网站做网站月薪10万
  • 门户网站域名是什么意思郑州网站建设金麦建站
  • 如何做个网站推广自己产品如何做自己的公司网站
  • 建站快车管理中山做营销型网站公司
  • Docker容器启动Nacos
  • Ultra Dynamic Sky(UDS)天空系统讲解
  • 上海网站建设q479185700棒翠屏区网站建设
  • 【LUT技术专题】双边网格优化的3DLUT-SABLUT
  • 青海省网站建设高端群英云服务器
  • 漂亮公司网站源码打包下载龙江人社使用方法
  • wordpress wp_head函数东营优化公司
  • 模型置信度在实际中的应用
  • 网站建设策划书格式及范文南昌网站建设品牌