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

简介: Kubernetes 核心实战之一(精华篇 1/3)

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Kubernetes 监控 安全
Kubernetes实战:集群管理与自动化技术详解
【6月更文挑战第27天】Kubernetes实战聚焦集群自动化管理,涵盖核心概念如主从架构、API Server及工作节点,强调自动扩缩容、RBAC安全控制与日志监控。通过IaC工具如Helm实现配置自动化,结合Prometheus等进行持续监控,强调安全策略与资源优化,展现K8s在现代应用管理中的威力。
|
7月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
640 33
|
8月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
401 5
|
8月前
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
8月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
1632 4
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
477 4
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
341 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
11月前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
11月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
216 0

推荐镜像

更多