视频链接

一.:K8s 概念 & 架构组件(1~4)

1:课程介绍:

spark3 集群 尚硅谷_Pod

2:K8s 概述 :

1)K8s 概述:

    -1:K8s 由 Google 在2014年,开源的容器化集群管理系统。

    -2:使用 K8s,进行容器化应用部署。

    -3:使用 K8s 利于应用拓展。

    -4:K8s 目标实施,让部署容器化应用,更加简洁和高效。

spark3 集群 尚硅谷_java_02


spark3 集群 尚硅谷_开发语言_03



3:K8s 特性(优势):

1)概述:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_04


   2)K8s 功能(优势):

    -1:自动装箱:基于容器,对应用运行环境的资源配置要求自动部署应用容器。

-2:自我修复(自愈能力)
  a:当容器失败时,会对容器进行重启。
  b:当所部署的 Node 节点有问题时,会对容器进行重新部署 和 重新调度。
  c:当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务。

-3:水平扩展:通过简单的命令、用户UI界面 或 基于CPU等资源使用情况,对应用容器进行规模扩大或规模剪裁。

-4:服务发现:用户不需要使用,额外的服务发现机制,就能够基于 Kubernetes 自身能力,实现服务和负载均衡。

-5:滚动更新:可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新。

-6:版本回退:可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时会退。

-7:密钥 和 配置管理:在不需要,重新构建镜像的情况下,可以部署、更新密钥、应用配置。蕾丝热部署。

-8:存储编排:自动实现存储系统挂载及应用,特别对有状态应用,实现数据持久化非常重要。存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务。

-9:批处理:提供一次性服务,定时任务;满足批量数据处理和分析的场景。

4:K8s 集群架构的组件:

spark3 集群 尚硅谷_开发语言_05


   1)Master node:

(集群控制节点,对集群进行调度管理,接收集群外用户对集群的请求操作)

    -1:API Server:集群统一的入口,以 Restful 风格进行操作,并交给 etcd 存储。

    -2:Scheduler:节点调度,选择 worker node 节点应用部署。

    -3:Controller-manager:处理集群中,常规的后台的任务。一个资源,对应一个控制器。

    -4:etcd:存储系统,用于保存集群中相关的数据。

2)Worker node:
(集群工作节点,运行用户业务应用容器)
    -1:Kubelet:master 派到 worker node 节点的代表,管理本机容器的部分。
    -2:kube-proxy:提供网络代理,可以实现负载均衡等操作。

5:K8s 核心概念:

1)Pod:
    -1:最小部署单元
    -2:一组容器的集合
    -3:容器间 共享网络的
    -4:生命周期是短暂的

2)Controller:
    -1:确保预期的 pod 副本数量
    -2:无状态 应用部署
    -3:有状态 应用部署:(依赖存储、网络IP唯一)
    -4:确保所有的 node 都运行同一个 pod
    -5:一次性任务 和 定时任务

3)Service:
    -1:定义一组 pod 的访问规则。(访问入口)

4)总体过程:通过 Service 统一入口进行访问,由 controller 创建 pod ,进行部署。


二.:搭建 K8s 集群(2种方式)(5~18)

1:搭建 K8s 环境平台规划:

1)单 master 集群:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_06


   2)多 master 集群:

spark3 集群 尚硅谷_nginx_07



2:服务器硬件配置要求:

1)测试环境:
    -1:master:2核、4G、20G
    -2:node:4核、8G、40G

2)生产环境:
    -1:master:8核、16G、100G
    -2:node:16核、64G、500G

3:方式一:基于客户端工具(kubeadm):

1)介绍:
    -1:Kubeadm:是官方社区,推出的一个用于快速部署 Kubernetes 集群的工具,这个工具能通过 2条指令,完成一个 Kubernetes 集群的部署。
    -2:Kubeadm:是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join。
    -3:用于快速部署 Kubernetes 集群。

2)Kubeadm 部署方式介绍:
    -1:创建一个 Master 节点:

kubeadm init

-2:将一个 Node 节点,加入到当前集群中:

kubeadm join <Master节点的 IP + 端口>

3)安装要求:

spark3 集群 尚硅谷_nginx_08


   4)最终目标:

    -1:在所有节点上,安装 Docker 和 kubeadm

    -2:部署 Kubernetes Master

    -3:部署容器网络插件

    -4:部署 Kubernetes Node,将节点介入 Kubernetes 集群中

    -5:部署 Dashboard Web 页面,可视化查看 Kubernetes 资源

spark3 集群 尚硅谷_java_09


   5)准备环境:

spark3 集群 尚硅谷_Pod_10


   6)系统初始化:(启动 3台主机)

    -1:关闭 防火墙:

systemctl stop firewalld	-- 临时关闭防火墙
systemctl disable firewalld 	-- 永久关闭防火墙

-2:关闭 selinux:

setenforce 0	-- 临时关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config		-- 永久关闭

cat /etc/selinux/config   -- 查看: SELINUX=disabled

-3:关闭 swap:(关闭内存交换)

swapoff -a	--临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab		-- 永久关闭

free -g		-- 验证,swap 必须为:0

-4:根据规划,设置主机名称:

hostnamectl set-hostname <newhostname>:指定新的 hostname

vim /etc/hostname
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

-5:在 master 添加 hosts:(只有 master 执行)

cat >> /etc/hosts << EOF
192.168.124.11 k8s-master
192.168.124.12 k8s-node1
192.168.124.23 k8s-node2
EOF

-6:将 桥接的 IPv4 流量,传递到 iptables 的链:

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system		--生效

-7:时间同步:

date -- 查看时间
yum install -y ntpdate
ntpdate time.windows.com 	-- 同步最新时间

-8:疑难问题:遇见提示是:只读的文件系统,运行命令如下:

mount -o remount rw /

-9:需要重启:

7)所有节点安装 Docker / Kubeadm / Kubelet :

Kubernetes:默认 CRI(容器运行时)为 Docker,因此先安装Docker

    -1:安装 Docker:(见 阳哥 笔记)

    -2:添加 阿里云 YUM 软件源:

spark3 集群 尚硅谷_Pod_11

vim /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

-3:安装 kubeadm、kubelet、kubectl:

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0

yum list|grep kube		-- 查看是否存在
 
systemctl start kubelet		-- 启动
systemctl enable kubelet	-- 开机启动



8)部署 Kubernetes Master:
    -1:在 Master 执行:(最后2个IP没什么特别要求,只要和上面不冲突即可)

kubeadm init \
--apiserver-advertise-address=192.168.124.11 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

-a:由于 默认拉取镜像地址 K8s.gcr.io,国内无法访问,这里指定阿里云镜像仓库地址。

  -b:service-cidr:service 网络地址。

  -c:pod-network-cidr:pod 网络地址。

  -d:cidr:

spark3 集群 尚硅谷_nginx_12


spark3 集群 尚硅谷_Pod_13


spark3 集群 尚硅谷_Pod_14


    -2:在 Master 执行:(执行成功后的提示,粘贴执行)

mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

  kubectl get nodes

spark3 集群 尚硅谷_java_15


9)加入 Kubernetes Node:

-2:在 node1 & node2 上执行:
(向集群中添加新节点,执行在 Kubeadm init 输出的 kubeadm join 命令)

kubeadm join 192.168.124.11:6443 --token sbzkvd.w1xslo09xj8fyhvs \
    --discovery-token-ca-cert-hash sha256:2b1f98aac375fe2a595d228e056f1f34dd4471455ac27e7d361001a5488dadb8

-3:默认 token 有效期 为:24h,重新创建 token 操作:(在 Master 操作)

kubeadm token create --print-join-command	-- 24h过期的token
kubeadm token create --ttl() --print-join-command	-- 不过期的token

-4:master 执行:(未准备就绪的状态)

spark3 集群 尚硅谷_Pod_16


10)部署 CNI 网络插件:(Master 执行 )
    -1:wget:(无需执行)

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

-2:默认镜像地址无法访问,sed命令修改为:docker hub 镜像仓库。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-- 安装

kubectl delete -f xxx
-- 删除

spark3 集群 尚硅谷_java_17


    -3:查看:(网络需要等待)

kubectl get nodes	//--获取 K8s集群中,所有节点
kubectl get ns	//--获取全部,名称空间
kubectl get pods  /  kubectl get pod	//-- 获取 默认名称空间的;部署的 pod 信息(最小单元)
kubectl get pods -o wide	//--可以获取到 Nginx 信息(完整信息)

kubectl get pods -n kube-system		//-- 查看指定名称空间的 pods
kubectl get pods --all-namespaces	//-- 获取所有名称空间的 pods
watch kubectl get pods -n kube-system -o wide	//-- 监控 pod 速度

spark3 集群 尚硅谷_开发语言_18


spark3 集群 尚硅谷_java_19


11)测试 Kubernetes 集群:(部署 Tomcat)
    -1:在 Kubenetes 集群中,创建一个 Pod,验证是否正常运行:

kubectl create deployment my_nginx --image=nginx
-- 联网拉取 Nginx 镜像

kubectl get all
kubectl get all -o wide
-- 获取 K8s 里,所有资源 

kubectl expose deployment nginx --port=80 --type=NodePort
-- 对外暴露端口,外界可以访问它(使用节点端口模式)

kubectl get pod,svc -o wide
-- 查看当前对外端口

spark3 集群 尚硅谷_开发语言_20


spark3 集群 尚硅谷_Pod_21


    -2:访问:

(访问任意一个节点:ip:31565,可以访问 Nginx)

(说明集群状态成功)

spark3 集群 尚硅谷_java_22


    -3:动态扩容:???

kubectl get deployment
kubectl set image(--help 查看帮助)

kubectl scale --replicas=3 deployment nginx 
-- 扩容:

-4:删除:
流程:创建 deployment 会管理 replicas,replicas 控制 pod 数量,有 pod 故障,会自动拉起新的 pod。

kubectl get all
kubectl delete deploy/nginx
kubectl delete deployment.apps/tomcat6

spark3 集群 尚硅谷_Pod_23


4:方式二:基于 二进制包 方式:

1)介绍:
    -1:从 Github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。
    -2:Kubeadm 降低部署门槛,但是屏蔽了很多细节,遇到问题很难排查。
    -3:如果想集群更容易可控,推荐使用 二进制包,部署 Kubernetes 集群。
    -4:虽然手动部署麻烦点,但期间可以学习很多工作原理,也利于后期维护。

2)安装要求:

spark3 集群 尚硅谷_开发语言_24


   3)搭建方式:

spark3 集群 尚硅谷_开发语言_25


   4)环境准备:(同上: 6)系统初始化)

   5)部署 etcd 集群:

   6)安装 Docker:

   7)部署 Master Node:

   8)部署 Worker Node:

   9)部署 DashBoard 和 Controller:


5:两种方式总结:

1)kubeadm:

2)二进制包:


三.:K8s 核心技术 & 概念(19~21)

1:命令行工具:(kubectl)

官网介绍:https://kubernetes.io/zh/docs/reference/kubectl/overview/
   1)kubectl 概述:(kube controller)
    -1:kubectl 是 Kubenetes 集群的命令行工具。
    -2:可以对集群本身进行管理。并能够在集群上,进行容器化应用的安装部署。

2)kube 命令的语法:

spark3 集群 尚硅谷_Pod_26


    -1:command:

spark3 集群 尚硅谷_开发语言_27


spark3 集群 尚硅谷_Pod_28


    -2:TYPE:

spark3 集群 尚硅谷_nginx_29


    -3:NAME:

spark3 集群 尚硅谷_Pod_30


    -4:flags:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_31


    -5:命令总结:

spark3 集群 尚硅谷_java_32


spark3 集群 尚硅谷_开发语言_33


spark3 集群 尚硅谷_开发语言_34

3)Kubectl help 获取更多的信息:

kubectl --help
kubectl get --help

4)kubectl 子命令使用分类:
    -1:
    -2:
    -3:
    -4:
    -5:

2:资源编排:(YML 文件详解)

1)YAML 文件概述:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_35

2)YAML 文件书写格式:

    -1:YAML 介绍:

spark3 集群 尚硅谷_开发语言_36


spark3 集群 尚硅谷_nginx_37


    -2:YAML 基本语法:

spark3 集群 尚硅谷_java_38


    -3:组成部分:

spark3 集群 尚硅谷_开发语言_39


    -4:常用字段含义:

spark3 集群 尚硅谷_java_40


spark3 集群 尚硅谷_开发语言_41


   3)快速编写 YAML 文件:

    -1:方式一:生成原始的 yaml 文件

kubectl create deployment web --image=nginx -o yaml --dry-run=client
-- 查看
kubectl create deployment web --image=nginx -o yaml --dry-run > aaa.yaml
--导出

-2:方式二:导出运行文件,再做修改。

[root@k8s-master ~]# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           26h

[root@k8s-master ~]# kubectl get deploy nginx -o=yaml --export > my2.yaml
Flag --export has been deprecated, This flag is deprecated and will be removed in future.


四.:Pod 介绍(22~29)

1:基本介绍:

1)Pod 基本概念:
    -1:最小的部署单元
    -2:包含多个容器(一组容器的集合)
    -3:一个 pod 中,容器共享网络命名空间
    -4:pod 是短暂的(ip 不唯一)

2)Pod 存在意义:

spark3 集群 尚硅谷_java_42


   3):

    -1:

    -2:

    -3:

    -4:

    -5:

4):
    -1:
    -2:
    -3:
    -4:
    -5:

5):
    -1:
    -2:
    -3:
    -4:
    -5:

2:Pod 两种实现机制:

1)共享网络:

    -1:通过 Pause 容器,把其他业务容器加入到 Pause 容器里面。

    -2:让所有业务容器在同一个名称空间中,可以实现网络共享。

spark3 集群 尚硅谷_开发语言_43


spark3 集群 尚硅谷_Pod_44


   2)共享存储:

    -1:引入了数据卷的概念,使用数据卷,进行持久化存储,可实现共享存储。

spark3 集群 尚硅谷_开发语言_45


spark3 集群 尚硅谷_开发语言_46



3:Pod(镜像拉取、重启策略、资源限制、健康检查):

1)镜像拉取:

    -1:镜像拉取策略:

spark3 集群 尚硅谷_nginx_47


   2)重启策略:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_48


   3)资源限制:本身由 docker 实现。

spark3 集群 尚硅谷_spark3 集群 尚硅谷_49


   4)健康检查:

spark3 集群 尚硅谷_开发语言_50



4:创建 Pod 流程:

1)流程图 :

spark3 集群 尚硅谷_Pod_51



5:Pod 调度策略:

1)影响调度的属性:(3)

spark3 集群 尚硅谷_spark3 集群 尚硅谷_52


spark3 集群 尚硅谷_java_53


   2)污点 & 污点容忍:(反亲和性)

spark3 集群 尚硅谷_spark3 集群 尚硅谷_54





搭建 K8s 集群 监控平台 系统
从 0 开始,搭建高可用 K8s 集群

五.:Controller 介绍(30~32)

1:概述 & 应用场景:

1)什么是 Controller:
    -1:在集群上,管理和运行容器的对象。

2)Pod 和 Controller 关系:

    -1:Pod 通过 Controller 控制器,实现应用的运维操作。(伸缩、回滚、升级)

    -2:他们之间,通过 label 标签 和 selector,建立关系。

spark3 集群 尚硅谷_java_55


   3)Deployment 控制器应用场景:

    -1:部署无状态应用。

    -2:管理 Pod 和 ReplicaSet。

    -3:(微服务中)上线部署、回滚升级等功能。


2:发布应用:

1)生成 yaml 文件,并查看:

kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml

spark3 集群 尚硅谷_Pod_56


   2)执行此文件:

anaconda-ks.cfg  initial-setup-ks.cfg  web.yaml
[root@k8s-master ~]# kubectl apply -f web.yaml 
deployment.apps/web created

[root@k8s-master ~]# kubectl get pods
NAME                    READY   STATUS              RESTARTS   AGE
nginx-f89759699-7dpqd   1/1     Running             0          34h
web-5dcb957ccc-sjz2x    0/1     ContainerCreating   0          12s

3)对外发布(对外暴露端口):(8080)

kubectl expose deployment web --port=8080 --type=NodePort --target-port=8080 --name=tomcat4 -o yaml > tomcat4.yaml
-- 生成yaml 文件

[root@k8s-master ~]# kubectl apply -f tomcat4.yaml 
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
service/tomcat4 configured
-- 发布

4)查看 & 访问:

[root@k8s-master ~]# kubectl get pods,svc
NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/tomcat4      NodePort    10.103.182.128   <none>        8080:31789/TCP   4m52s

-1:访问:http://192.168.124.11:31789/

3:应用升级回滚 & 弹性伸缩:

spark3 集群 尚硅谷_Pod_57





六.:Service(33~34)

1:概述:

1)service 存在的意义:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_58


   2)Pod 和 Service 关系:

spark3 集群 尚硅谷_开发语言_59



2:三种 常用类型:

spark3 集群 尚硅谷_开发语言_60




七.:Controller(35~37)

1:无状态 & 有状态:

spark3 集群 尚硅谷_Pod_61


2:部署有状态应用:

spark3 集群 尚硅谷_开发语言_62


3:部署守护进程:(DaemonSet)

spark3 集群 尚硅谷_开发语言_63


4:一次性任务 & 定时任务:

1)一次性任务(job):

spark3 集群 尚硅谷_Pod_64


   2)定时任务(cronjob):

spark3 集群 尚硅谷_spark3 集群 尚硅谷_65





八.:配置管理(38~39)

1:secret:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_66


spark3 集群 尚硅谷_开发语言_67


2:ConfigMap:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_68


spark3 集群 尚硅谷_开发语言_69





九.:集群安全机制(40~42)

1:概述:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_70


spark3 集群 尚硅谷_java_71


2:鉴权(RBAC):

1)结构:

spark3 集群 尚硅谷_开发语言_72


   2)实现过程:

spark3 集群 尚硅谷_开发语言_73





十.:核心技术—Ingress(43~44)

1:解释:

spark3 集群 尚硅谷_Pod_74


spark3 集群 尚硅谷_nginx_75


2:操作:

1):
    -1:
    -2:
    -3:
    -4:
    -5:

2):
    -1:
    -2:
    -3:
    -4:
    -5:

3):
    -1:
    -2:
    -3:
    -4:
    -5:

4):
    -1:
    -2:
    -3:
    -4:
    -5:

5):
    -1:
    -2:
    -3:
    -4:
    -5:


十一.:核心技术—Helm(45~51)

1::

1):
    -1:
    -2:
    -3:
    -4:
    -5:

2):
    -1:
    -2:
    -3:
    -4:
    -5:

3):
    -1:
    -2:
    -3:
    -4:
    -5:

4):
    -1:
    -2:
    -3:
    -4:
    -5:

5):
    -1:
    -2:
    -3:
    -4:
    -5:


十二.:核心技术—持久化存储(52~53)

1::

1):
    -1:
    -2:
    -3:
    -4:
    -5:

2):
    -1:
    -2:
    -3:
    -4:
    -5:

3):
    -1:
    -2:
    -3:
    -4:
    -5:

4):
    -1:
    -2:
    -3:
    -4:
    -5:

5):
    -1:
    -2:
    -3:
    -4:
    -5:

2::

1):
    -1:
    -2:
    -3:
    -4:
    -5:

2):
    -1:
    -2:
    -3:
    -4:
    -5:

3):
    -1:
    -2:
    -3:
    -4:
    -5:

4):
    -1:
    -2:
    -3:
    -4:
    -5:

5):
    -1:
    -2:
    -3:
    -4:
    -5:


十三.:集群搭建(54~60)

1::

1):
    -1:
    -2:
    -3:
    -4:
    -5:

2):
    -1:
    -2:
    -3:
    -4:
    -5:

3):
    -1:
    -2:
    -3:
    -4:
    -5:

4):
    -1:
    -2:
    -3:
    -4:
    -5:

5):
    -1:
    -2:
    -3:
    -4:
    -5:

2::

1):
    -1:
    -2:
    -3:
    -4:
    -5:

2):
    -1:
    -2:
    -3:
    -4:
    -5:

3):
    -1:
    -2:
    -3:
    -4:
    -5:

4):
    -1:
    -2:
    -3:
    -4:
    -5:

5):
    -1:
    -2:
    -3:
    -4:
    -5:


十四.:K8s 集群项目部署(Java)(61~64)

1:容器交付流程:

1)总体流程:

spark3 集群 尚硅谷_java_76


   2)细节流程:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_77


2:制作镜像 & 推送到云:

1)项目打包:

spark3 集群 尚硅谷_Pod_78


   2)制作镜像 & 测试运行:

    -1:maven 打包项目:

    -2:docker file:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD demo-hello.jar demo-hello.jar
ENTRYPOINT ["java","-jar","/demo-hello.jar","&"]

-3:build:

docker build -f Dockerfile -t demo-dockerfile-01:1.2 .

-4:运行:

docker run -d -p 8080:8080 --name aaaaadockerfile demo-dockerfile-01:1.2

-5:访问测试:

spark3 集群 尚硅谷_Pod_79


spark3 集群 尚硅谷_spark3 集群 尚硅谷_80

3)上传镜像,到云服务器中:

spark3 集群 尚硅谷_开发语言_81



3:部署镜像 & 对外暴露镜像:

1)部署镜像:
    -1:导出 yaml 文件:

kubectl create deployment javademo1 --image=registry.cn-beijing.aliyuncs.com/z-java-demo-01/z-java-demo-01-reposroty --dry-run -o yaml >java-demo1.yaml

-2:执行 yaml 文件:

[root@k8s-master dockerfile]# kubectl apply -f java-demo1.yaml 
deployment.apps/javademo1 created

-3:查看:

[root@k8s-master dockerfile]# kubectl get pods
NAME                         READY   STATUS             RESTARTS   AGE
javademo1-6d46f4d788-9p4ld   0/1     Running   0          2m15s

2)暴露端口:

kubectl expose deployment javademo1 --port=8080 --target-port=8080 --type=NodePort

-1:查看对外端口:

kubectl get pods,svc

3)总结:

spark3 集群 尚硅谷_spark3 集群 尚硅谷_82