Kubernetes 核心实战之一(精华篇 1/2)

news/2024/7/4 7:44:24 标签: kubernetes, 容器, 云原生

文章目录

    • 1,资源创建方式
      • 1.1 yaml
      • 1.2 命令行
    • 2,NameSpace命名空间
      • 2.1 命令行创建ns
      • 2.2 yaml 创建ns
    • 3,Pod
      • 3.1 命令行 创建pod
      • 3.2 yaml 创建pod
      • 3.3 可视化界面 创建
        • 3.3.1 Pod nginx
        • 3.3.2 Pod nginx + tomcat
        • 3.3.3 Pod 2ngnix

1,资源创建方式

1.1 yaml

用 yaml 配置 在 kubernetes 中创建资源

kubectl apply -f xxxx.yaml

Kubernetes 集群搭建时候,创建资源的方式,大部分用的yaml的方式去创建资源。

1.2 命令行

用 命令行 在 kubernetes 中创建资源

# 查看所有命名空间
kubectl get ns
# 创建命名空间
kubectl create ns xxx
# 删除命名空间
kubectl delete ns xxx

2,NameSpace命名空间

NameSpace(命名空间):用来对集群资源进行划分;默认只隔离资源,不隔离网络。 (-n)
在这里插入图片描述
在这里插入图片描述
其中kube-nod-lease、kube-public、kube-system 命名空间在安装 kubernetes 时自身自带的命名空间,
kubernetes-dashboard 命名空间是在安装了 dashboard 时候创建的。
在这里插入图片描述
在yaml中就指定了命名空间kubernetes-dashboard。

2.1 命令行创建ns

# 查看命名空间
kubectl get ns

# 查看 部署了哪些应用
kubectl get pods -A
# 查看 默认命名空间(default)部署的应用
kubectl get pods

# 查看 某个命名空间(kubernetes-dashboard)部署的应用
kubectl get pod -n kubernetes-dashboard

# 创建命名空间
kubectl create ns hello
# 删除命名空间
kubectl delete ns hello

在这里插入图片描述
在这里插入图片描述

2.2 yaml 创建ns

  • hello-yaml.yaml
# 版本号
apiVersion: v1
# 类型
kind: Namespace
# 元数据
metadata:
  # Namespace(命名空间) 的 名称
  name: hello-yaml
  • yaml 创建 Namespace
vi hello-yaml.yaml

# 将上述内容 粘贴进 hello-yaml.yaml

kubectl apply -f hello-yaml.yaml

kubectl get ns
# kubectl delete ns hello-yaml
# 配置文件创建的资源 用配置文件 删
kubectl delete -f hello-yaml.yaml

在这里插入图片描述

3,Pod

Pod:运行的一组容器,是 kubernetes 找那个应用的最小单位。(工作负载)
在这里插入图片描述

docker ps -a

kubectl get pod -A

# 查看 每个 Pod 分配的 IP,IP 范围 在下图配置的
kubectl get pod -owide

在这里插入图片描述
查看 每个 Pod 分配的 IP 范围设置

在这里插入图片描述

3.1 命令行 创建pod

# mynginx 是自定义的名称,nginx 镜像; 默认到 default 命名空间
kubectl run mynginx-k8s --image=nginx

kubectl get pods -A

# 默认 命名空间
kubectl get pods

# STATUS 是 ContainerCreating 的,查看进度(Events 属性)
kubectl describe pod mynginx-k8s

# 在 3 个 Xshell 终端中 (查看在哪个 节点服务器上 运行着)
docker ps

# 删除 Pod(默认的命名空间),kubectl delete pod mynginx-k8s -n 命名空间  (非默认命名空间)
kubectl delete pod mynginx-k8s

kubectl get pods

在这里插入图片描述
稍等一会儿pod开始running状态了。
在这里插入图片描述

3.2 yaml 创建pod

  • mynginx-yaml.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: mynginx-yaml
  # Pod 的 名字  
  name: mynginx-yaml
  # 指定命名空间 (不写是 默认 default)
  namespace: default
spec:
  containers:
  # 多个 容器,多个 - 
  - image: nginx
    # 容器的名字
    name: mgninx-yaml
  • yaml 创建 Pod
vi mynginx-yaml.yaml

# 将上述内容 粘贴进来

kubectl apply -f mynginx-yaml.yaml

kubectl get pod
kubectl describe pod mynginx-yaml

# 配置文件创建的资源 用配置文件 删
kubectl delete -f mynginx-yaml.yaml

在这里插入图片描述

查看创建过程的事件
在这里插入图片描述

3.3 可视化界面 创建

小知识: 左边菜单 有 N 标注的, 是需要 命名空间的
在这里插入图片描述

3.3.1 Pod nginx

在这里插入图片描述
可视化页面 上传 yaml 创建 Pod

在这里插入图片描述

来到 Pod栏 查看 创建的 Pod

在这里插入图片描述
进入到pod

kubectl get pods -A -owide

# mynginx-yaml 是 Pod Name
kubectl exec -it mynginx-yaml 是 Pod Name -- /bin/bash

whereis nginx
cd /usr/share/nginx/html/
echo "hello tigerhhzz welcome to k8s ngnix" > index.html
# Ctrl P + Q 退出

# 查看的 映射的IP,输出 hello k8s ngnix
curl 192.168.140.69:80

在这里插入图片描述
可以在 dashboard 页面,右边, 下拉选点击 执行。
在这里插入图片描述
在这里插入图片描述
dashboard 页面 进入终端 修改
在这里插入图片描述
访问 nginx 首页,修改成功

总结
k8s 给 每一个pod 分配 IP,IP网段是在 3.3.5.2 初始化主节点中 中 设置的
–pod-network-cidr=192.168.0.0/16
集群中的任意一个机器以及 任意的应用 都能通过 Pod 分配的 IP 来访问 Pod,只能在集群内访问,
如果要在集群外访问,暴露 k8s 端口 和 安全组。

3.3.2 Pod nginx + tomcat

下面是 1 个 Pod 里面 有 2 个 容器(nginx 和 tomcat)

  • multicontainer-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp
  # Pod 的 名字  
  name: myapp
  # 指定命名空间 (不写是 默认 default)
  namespace: default
spec:
  containers:
  # 多个 容器,多个 - 
  - image: nginx
    # 容器的名字
    name: myngnix
  - image: tomcat:8.5.68
    name: mytomcat
vi multicontainer-pod.yaml

# 将上述内容 粘贴进来

kubectl apply -f multicontainer-pod.yaml

kubectl get pod
kubectl describe pod myapp

# 配置文件创建的资源 用配置文件 删
kubectl delete -f multicontainer-pod.yaml

在这里插入图片描述
Ready 是 0 / 2了。 有2个 容器(nginx 和 tomcat),稍等一会儿,等两个容器创建完毕,状态变为running。

kubectl get pod 
kubectl get pods -owide

curl ip:80
curl ip:8080  # 这个会404,但后面是 apache tomcat 打印出来的

在这里插入图片描述
在这里插入图片描述

在 同一个 Pod 共享一个 网络空间、共享网络存储。
在 可视化界面上, ngnix 中 curl 127.0.0.1:8080;tomcat 中 127.0.0.1:80 ;都是可以的。
在这里插入图片描述
nginx 中访问
在这里插入图片描述
tomcat 中访问
在这里插入图片描述

3.3.3 Pod 2ngnix
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp-2
  # Pod 的 名字  
  name: myapp-2
  # 指定命名空间 (不写是 默认 default)
  namespace: default
spec:
  containers:
  - image: nginx
    name: myngnix01
  - image: nginx
    name: myngnix02

在这里插入图片描述
创建 Pod

在这里插入图片描述
查看 Pod 列表

在这里插入图片描述
第二个 启动失败:原因是端口被占用!!!

稍等一会儿,1 / 2 状态是 ERROR, 端口冲突了

kubectl get pods

# 看 Events 轨迹
kubectl describe pod myapp-2

在这里插入图片描述
在这里插入图片描述
dashboard 页面 也可以看到 Events
在这里插入图片描述
查看 Pod 日志
在这里插入图片描述
在这里插入图片描述

查看 mynginx02 启动日志,发现 80端口被占用。

然后把这个 删掉,用 deployment 解决。
在这里插入图片描述
删掉 Pod myapp-2
在这里插入图片描述


http://www.niftyadmin.cn/n/5303899.html

相关文章

如何精选WordPress插件

WordPress的强大功能大多得益于其众多插件。正确选择插件可以让你的网站功能强大、运行平稳,而错误的选择则可能导致网站变慢甚至出现安全漏洞。这篇文章将指导你如何在众多可选的插件中作出明智的选择。 明确需求 在浏览WordPress的插件目录或其他市场之前&#…

免费的云服务器~三丰云

在当今这个数字化的时代,无论是个人还是企业,都离不开网络的支持。而对于那些想要在互联网上搭建自己网站的朋友来说,选择一个稳定、高效的虚拟主机或云服务器显得尤为重要。今天,我要为大家推荐的就是三丰云——一个提供免费虚拟…

MYSQL语句 | find_in_set()

FIND_IN_SET() 是 MySQL 中的一个字符串函数,用于在逗号分隔的字符串列表中查找指定字符串的位置。 它的语法如下: FIND_IN_SET(search_string, string_list)search_string: 要搜索的字符串。string_list: 逗号分隔的字符串列表。 该函数返回一个整数…

解析消费全返---看如何使用模式探索餐饮业新航标。

每天五分钟讲解一个商业模式,大家好我是模式策划啊浩。 亲爱的餐饮业朋友们,今天我想和大家分享一个话题,那就是消费增值模式在餐饮行业的应用。近年来,随着消费者需求的不断升级和市场竞争的加剧,消费增值模式为餐饮…

【算法刷题】## 算法题目第1讲:双指针处理数组题目 带视频讲解

算法题目第一讲:双指针处理数组题目 解决力扣: [344. 反转字符串][167. 两数之和 II - 输入有序数组][26. 删除有序数组中的重复项][27. 移除元素][283. 移动零][5. 最长回文子串] 配合b站视频讲解食用更佳:https://www.bilibili.com/video/BV1vW4y1P…

什么是多因素身份验证(MFA)

多重身份验证(MFA)是在授予用户访问特定资源的权限之前,使用多重身份验证来验证用户身份的过程,仅使用单一因素(传统上是用户名和密码)来保护资源,使它们容易受到破坏,添加其他身份验…

鸿蒙Harmony(九)页面路由

介绍 页面路由是指在应用程序中实现不同页面之间的跳转和数据传递。 页面栈的最大容量上限为32个页面,使用router.clear()方法可以清空页面栈,释放内存Router有两种页面跳转模式,分别是: -router.pushUrl():目标页不会替换当前页…

PO模式。

对项目进行梳理和总结 1.整个项目中的文件解析 2.每个文件包和模块具体的使用规范 3.整个项目中的模块与文件之间的联系 4.各个模块及包之间的导入使用 5.整体从项目完成之后的角度出发去将军项目搭建流程以及使用规范 搭建app自动化测试环境 安卓的sdk java的sdk 安装app…