54-64-k8s-集群监控-高可以用集群-交付部署

news2024/11/19 17:43:16

54-k8s-集群监控-高可以用集群-交付部署

k8s集群监控

1、概述

一个好的系统,主要监控以下内容

  • 集群监控
    • 节点资源利用率
    • 节点数
    • 运行Pods
  • Pod监控
    • 容器指标
    • 应用程序【程序占用多少CPU、内存】

2、监控平台

使用普罗米修斯【prometheus】 + Grafana 搭建监控平台

  • prometheus【定时搜索被监控服务的状态】

    • 开源的
    • 监控、报警、数据库
    • 以HTTP协议周期性抓取被监控组件状态
    • 不需要复杂的集成过程,使用http接口接入即可
  • Grafana

    • 开源的数据分析和可视化工具
    • 支持多种数据源

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Bjnqgt1-1670133471468)(png/image-20220401201550793.png)]

1、部署prometheus

首先需部署一个守护进程node-exporter.yaml


---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: kube-system
  labels:
    k8s-app: node-exporter
spec:
  selector:
    matchLabels:
      k8s-app: node-exporter
  template:
    metadata:
      labels:
        k8s-app: node-exporter
    spec:
      containers:
      - image: prom/node-exporter
        name: node-exporter
        ports:
        - containerPort: 9100
          protocol: TCP
          name: http
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: node-exporter
  name: node-exporter
  namespace: kube-system
spec:
  ports:
  - name: http
    port: 9100
    nodePort: 31672
    protocol: TCP
  type: NodePort
  selector:
    k8s-app: node-exporter

然后执行下面命令

kubectl create -f node-exporter.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iw0Q1VcY-1670133471469)(png/image-20220401201733614.png)]

然后通过yaml的方式部署prometheus

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l5APiizs-1670133471469)(png/image-20220401201759545.png)]

  • configmap:定义一个configmap:存储一些配置文件【不加密】
  • prometheus.deploy.yaml:部署一个deployment【包括端口号,资源限制】
  • prometheus.svc.yaml:对外暴露的端口
  • rbac-setup.yaml:分配一些角色的权限

下面进入目录下,首先部署 rbac-setup.yaml

kubectl create -f rbac-setup.yaml

然后分别部署

# 部署configmap
kubectl create -f configmap.yaml
# 部署deployment
kubectl create -f prometheus.deploy.yml
# 部署svc
kubectl create -f prometheus.svc.yml

部署完成后,我们使用下面命令查看

kubectl get pods -n kube-system

在我们部署完成后,即可看到 prometheus 的 pod了,然后通过下面命令,能够看到对应的端口

kubectl get svc -n kube-system

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEHiLEy0-1670133471470)(png/image-20220401200140853.png)]

通过这个,我们可以看到 prometheus 对外暴露的端口为 30003,访问页面即可对应的图形化界面

http://节点ip:30003

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZLJUcn1-1670133471470)(png/image-20220401200122021.png)]

2、部署grafana

部署完prometheus后,还需要来部署grafana

kubectl create -f grafana-deploy.yaml
# 创建deployment
kubectl create -f grafana-deploy.yaml
# 创建svc
kubectl create -f grafana-svc.yaml
# 创建 ing
kubectl create -f grafana-ing.yaml

kubectl get pods -n kube-system

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PQdV0ioW-1670133471471)(png/image-20220401200106052.png)]

3、配置数据源

下面我们需要开始打开 Grafana,然后配置数据源,导入数据显示模板

kubectl get svc -n kube-system

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-olcEntUg-1670133471471)(png/image-20220401200421238.png)]

我们可以通过 ip + 30821访问我们的 grafana 图形化页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ekkq9ZEN-1670133471472)(png/image-20220401200411907.png)]

默认账号和密码:admin admin

进入后,需要配置 prometheus 的数据源 和 对应的IP【这里IP是我们的ClusterIP】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XCMI9SCp-1670133471474)(png/image-20220401200701278.png)]

4、设置显示数据的模板

选择Dashboard,导入我们的模板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5a8QpNsl-1670133471474)(png/image-20201121092312118.png)]

然后输入 315 号模板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p1D73RIs-1670133471474)(png/image-20201121092418180.png)]

然后选择 prometheus数据源 mydb,导入即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pweoWAKb-1670133471475)(png/image-20201121092443266.png)]

导入后的效果如下所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gRCQLK2I-1670133471475)(png/image-20220401200924209.png)]

K8S高可用集群搭建

之前搭建的集群,只有一个master节点,当master节点宕机的时候,通过node将无法继续访问,而master主要是管理作用,所以整个集群将无法提供服务

单节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gQKGATGY-1670133471476)(png/image-20220401221235335.png)]

高可用集群

搭建一个多master节点的高可用集群,不会存在单点故障问题,但是在node 和 master节点之间,需要存在一个 LoadBalancer组件,作用一是负载,二是检查master节点的状态

对外有一个统一的VIP:虚拟ip来对外进行访问

1、keepalived:配置虚拟ip,检查节点的状态

2、haproxy:负载均衡服务【类似于nginx】

3、apiserver,controller,manager,scheduler:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTglp7HJ-1670133471476)(png/image-20220401221423727.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3t3L5dhf-1670133471477)(png/image-20220401221506278.png)]

  • 在 node 节点和 master 节点之间,需要一个 LoadBalancer 组件

    • 【作用 1】负载
    • 【作用 2】检查 master 节点的状态
  • 对外需要一个统一的 VIP

    • 【作用 1】虚拟 ip 对外进行访问

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dIViT70a-1670133471477)(png/image-20220405190249805.png)]

高可用集群步骤

使用二进制包方式搭建 Kubernetes 集群主要分为以下几步:

  1. 环境准备】准备四台虚拟机,并安装操作系统 CentOS 7.x
  2. 系统初始化】对四个刚安装好的操作系统进行初始化操作
  3. 安装 docker、kubectl、kubeadm、kubectl】对四个节点进行安装
  4. 配置高可用 VIP】对 master 节点安装keepalivedhaproxy
  5. 部署 master 组件】在 master 节点上安装kube-apiserverkube-controller-managerkube-scheduler
  6. 安装网络插件】配置 CNI 网络插件,用于节点之间的连通
  7. 测试集群】通过拉取一个 nginx 进行测试,能否进行外网测试

来源尚硅谷:架构采用2个master节点,一个node节点来搭建高可用集群记性测试

角色IP步骤
k8sLoadBalancer192.168.10.101init docker kubectl kubeadm kubectl
k8smaster1192.168.10.105init docker kubectl kubeadm kubectl keepalived haproxy
k8smaster2192.168.10.106init docker kubectl kubeadm kubectl keepalived haproxy
k8snode1192.168.10.107init docker kubectl kubeadm kubectl

1、初始化操作

分别在三个节点上进行操作

# 关闭防火墙
systemctl stop firewalld
# 禁用 firewalld 服务
systemctl disable firewalld

# 关闭 selinux
# 临时关闭【立即生效】告警,不启用,Permissive,查看使用 getenforce 命令
setenforce 0  
# 永久关闭【重启生效】
sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config  

# 关闭 swap
# 临时关闭【立即生效】查看使用 free 命令
swapoff -a 
# 永久关闭【重启生效】
sed -ri 's/.*swap.*/#&/' /etc/fstab

# 在主机名静态查询表中添加 4 台主机
cat >> /etc/hosts << EOF
192.168.10.101 k8sLoadBalancer
192.168.10.105 k8smaster1
192.168.10.106 k8smaster2
192.168.10.107 k8snode1
EOF

# 将桥接的 IPv4 流量传递到 iptables 的链【3 个节点上都执行】
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# 生效
sysctl --system  

# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

# 根据规划设置主机名【k8sLoadBalancer 节点上操作】
hostnamectl set-hostname k8sLoadBalancer
# 根据规划设置主机名【k8smaster1 节点上操作】
hostnamectl set-hostname ks8master1
# 根据规划设置主机名【k8smaster2 节点上操作】
hostnamectl set-hostname k8smaster2
# 根据规划设置主机名【k8snode1 节点操作】
hostnamectl set-hostname k8snode1

2、安装 docker、kubelet、kubeadm、kubectl

参考:http://bbigsun.gitee.io/kubernetes-study

所有节点安装 docker/kubelet/kubeadm/kubectl,Kubernetes 默认 CRI(容器运行时)为 docker,因此先安装 docker

1、安装 docker

(1)首先配置一下 docker 的阿里 yum 源

cat >/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

(2)然后 yum 方式安装 docker

# yum 安装
yum -y install docker-ce

# 查看 docker 版本
docker --version  

(3)配置 docker 的镜像源【阿里云】

cat >> /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

(4)然后启动 docker

systemctl start docker
systemctl enable docker
systemctl status docker

2、安装 kubeadm,kubelet 和 kubectl

(1)配置 kubernetes 阿里云 yum 源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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
EOF

(2)yum 方式安装,由于版本更新频繁,这里指定版本号部署

# 查看版本
yum list kubeadm --showduplicates

# 安装 kubelet、kubeadm、kubectl,同时指定版本
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
# 设置开机启动【这里先不启动】
systemctl enable kubelet

3、配置高可用 VIP【haproxy+keepalived】

【k8smaster1 + k8smaster2 上操作】

1、安装 haproxy + keepalived

我们需要在所有的 master 节点【k8smaster1 和 k8smaster2】上部署 haproxy + keepAlive

yum install -y haproxy keepalived

2、配置 haproxy

所有master节点的haproxy配置相同,haproxy 的配置文件是/etc/haproxy/haproxy.cfg

配置中声明了后端代理的两个 master 节点服务器,指定了 haproxy 运行的端口为 16443 等,因此 16443 端口为集群的入口

cat > /etc/haproxy/haproxy.cfg << EOF
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2
    
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon 
       
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------  
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
#---------------------------------------------------------------------
# kubernetes apiserver frontend which proxys to the backends
#--------------------------------------------------------------------- 
frontend kubernetes-apiserver
    mode                 tcp
    bind                 *:16443
    option               tcplog
    default_backend      kubernetes-apiserver    
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend kubernetes-apiserver
    mode        tcp
    balance     roundrobin
    server      k8smaster1   192.168.10.105:6443 check
    server      k8smaster2   192.168.10.106:6443 check
#---------------------------------------------------------------------
# collection haproxy statistics message
#---------------------------------------------------------------------
listen stats
    bind                 *:10080
    stats auth           admin:awesomePassword
    stats refresh        5s
    stats realm          HAProxy\ Statistics
    stats uri            /admin?stats
EOF

3、配置 keepalived

keepalived中使用track_script机制来配置脚本进行探测kubernetesmaster节点是否宕机,并以此切换节点实现高可用。

(1)k8smaster1节点的keepalived配置文件如下所示,配置文件所在的位置/etc/keepalived/keepalived.cfg

cat > /etc/keepalived/keepalived.conf <<EOF 
! Configuration File for keepalived

global_defs {
   router_id k8s
}

vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 3
    weight -2
    fall 10
    rise 2
}

vrrp_instance VI_1 {
    state MASTER 
    interface ens33 
    mcast_src_ip 192.168.10.105
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass ceb1b3ec013d66163d6ab
    }
    virtual_ipaddress {
        192.168.10.101
    }
    track_script {
        check_haproxy
    }
}
EOF

需要注意几点(前两点记得修改):

  • mcast_src_ip:配置多播源地址,此地址是当前主机的 ip 地址。
  • prioritykeepalived根据此项参数的大小仲裁master节点。我们这里让 master 节点为kubernetes提供服务,其他两个节点暂时为备用节点。因此k8smaster1节点设置为100k8smaster2节点设置为99
  • state:我们将k8smaster1节点的state字段设置为MASTER,其他节点字段修改为BACKUP
  • 上面的集群检查功能是关闭的,等到集群建立完成后再开启。

(2)配置 k8smaster2 节点

cat > /etc/keepalived/keepalived.conf <<EOF 
! Configuration File for keepalived

global_defs {
   router_id k8s
}

vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 3
    weight -2
    fall 10
    rise 2
}

vrrp_instance VI_1 {
    state BACKUP 
    interface ens33 
    mcast_src_ip 192.168.10.106
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass ceb1b3ec013d66163d6ab
    }
    virtual_ipaddress {
        192.168.10.101
    }
    track_script {
        check_haproxy
    }
}
EOF

4、启动和检查 【k8smaster1 和 k8smaster2 均要启动】

# 启动 haproxy
systemctl start haproxy
systemctl enable haproxy
systemctl status haproxy

# 启动 keepalived
systemctl start keepalived.service
systemctl enable keepalived.service
systemctl status keepalived.service

# 启动后查看 master 网卡信息
ip a s ens33

# 检查是否可以 ping 通
ping 192.168.10.101

# 如果出错
#      初始化一下!!!并重新启动!!!
systemctl stop firewalld
setenforce 0  
swapoff -a 

4、部署 Kubernetes Master 组件

【k8smaster1 + k8smaster2 + k8snode1 上操作】

1、k8smaster1 节点

(1)初始化操作

# 导出初始化配置文件,然后修改配置,再进行初始化
kubeadm config print init-defaults > kubeadm-init.yaml

# 这里直接写入配置,并初始化
cat > kubeadm-init.yaml << EOF
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.10.101 # k8sLoadBalancer ip
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: k8sloadbalancer
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer: # 添加两行配置
  certSANs:
  - "192.168.10.101" # k8sLoadBalancer ip 即 VIP 的地址
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers   # 阿里云的镜像站点
controlPlaneEndpoint: "192.168.10.101:16443"  # VIP 的地址和端口
kind: ClusterConfiguration
kubernetesVersion: v1.18.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16        # 添加 pod 网段
scheduler: {}
EOF

# 直接 kubeadm init 初始化,中间会拉取镜像,速度较慢,分为两步来做
# (1)提前拉取镜像
kubeadm config images pull --config kubeadm-init.yaml
# (2)初始化
kubeadm init --config kubeadm-init.yaml --upload-certs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wx3q1ARS-1670133471479)(png/image-20220405191401323.png)]

(2)按照提示信息,执行下方命令

# 执行下方命令
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
# 查看 pod
kubectl get pods -n kube-system

## 输出结果
[root@ks8master1 ~]# kubectl get nodes
[root@ks8master1 ~]# kubectl get pods -n kube-system

2、k8smaster2 节点

按照k8smaster1提示信息,将k8smaster2加入集群

# k8smaster2 加入集群
  kubeadm join 192.168.10.101:16443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:57cc2544224e646773db5ec401ad6e01e3d76ff769407fdd4bb600c18e354b71 \
    --control-plane --certificate-key d8bc6c08b4948778d2c549a9afb2898490fd0edd55388c661caff013de673c23

# 查看集群状态
kubectl get cs
# 查看 pod
kubectl get pods -n kube-system

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dajI5qJJ-1670133471479)(png/image-20220405191548194.png)]

3、k8snode1 节点

按照k8smaster1提示信息,将k8snode1加入集群

kubeadm join 192.168.10.101:16443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:57cc2544224e646773db5ec401ad6e01e3d76ff769407fdd4bb600c18e354b71

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c7GOayoU-1670133471480)(png/image-20220405191529873.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a0GGRVPR-1670133471480)(png/image-20220405191515121.png)]

5、安装集群网络

从官方地址获取到 flannel 的 yaml,在 k8smaster1 上执行

# 下载 yaml 文件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CRnkAkRT-1670133471481)(png/image-20220405191649627.png)]

6、测试 kubernetes 集群

在 Kubernetes 集群中创建一个 pod,验证是否正常运行:

# 创建 nginx deployment
kubectl create deployment nginx --image=nginx
# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看状态
kubectl get pod,svc

## [ip:port]
# 浏览器访问:
# 192.168.60.151:32594
# 192.168.60.152:32594
# 192.168.60.153:32594
[root@ks8master1 ~]# kubectl get pod,svc
NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        24m
service/nginx        NodePort    10.109.174.226   <none>        80:32594/TCP   8s

然后我们通过任何一个节点,都能够访问我们的 nginx 页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8W4RFO4U-1670133471481)(png/image-20220405191718620.png)]

容器交付

在k8s集群中部署Java项目

容器交付流程

1、开发代码阶段:编写代码、编写Dockerfile【打镜像做准备】

2、持续交付/集成:代码编译打包、制作镜像、上传镜像仓库

3、应用部署:环境准备、Pod、Service、Ingress

4、运维:监控、故障排查、应用升级

k8s部署Java项目流程

  • 制作镜像【Dockerfile】
  • 上传到镜像仓库【Dockerhub、阿里云、网易】
  • 控制器部署镜像【Deployment】
  • 对外暴露应用【Service、Ingress】
  • 运维【监控、升级】

同级别目录,springboot测试案例,\安装文档和yaml文件\javaproject\demojenkins

idea打包生成demojenkins.jar

1、编写程序生成jar包

上传jar和dockerfile

2、dockerfile生成镜像

docker build -t java-demo-01:latest .
查看
docker images

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rliRdj8y-1670133471481)(png/image-20220405230222230.png)]

启动镜像测试

制作镜像后,启动镜像测试

docker run -d -p 8111:8111 java-demo-01:latest -t

启动完成后,通过浏览器进行访问,即可看到我们的java程序

http://192.168.10.102:8111/user

3、推送镜像

将制作好的镜像,上传到镜像服务器中【阿里云、DockerHub】

首先我们需要到 阿里云 容器镜像服务,https://cr.console.aliyun.com/cn-hangzhou/instances,然后开始创建镜像仓库

创建镜像仓库,选择本地仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7h1kVKM-1670133471482)(png/image-20220405230714081.png)]

4、登录镜像服务器

使用命令登录

docker login --username=XXXXXXX@163.com registry.cn-shenzhen.aliyuncs.com

然后输入刚刚我们开放时候的注册的密码

5、镜像添加版本号

下面为镜像添加版本号

# 实例
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:[镜像版本号]

# 举例
docker tag 33f11349c27d registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

6、推送镜像

添加版本号信息后,可以推送到镜像到阿里云了

docker push registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WTK7Yr7V-1670133471482)(png/image-20220405230932513.png)]

操作完成后,我们在我们的阿里云镜像服务,就能看到推送上来的镜像了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWnIktxe-1670133471482)(png/image-20220405230948905.png)]

7、控制器部署镜像

通过控制器部署镜像了,首先根据刚刚的镜像,导出yaml

# 导出yaml
kubectl create deployment  javademo1 --image=registry.cn-hangzhou.aliyuncs.com/XXXXX/java-project-01:1.0.0 --dry-run -o yaml > javademo1.yaml

导出后的 javademo1.yaml 如下所示

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: javademo1
  name: javademo1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: javademo1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: javademo1
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/XXXXX/java-project-01:1.0.0
        name: java-project-01
        resources: {}
status: {}

然后通过下面命令,通过yaml创建我们的deployment

# 创建
kubectl apply -f javademo1.yaml
# 查看 pods

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9tQqM7FV-1670133471483)(png/image-20220405231109550.png)]

运维操作等。。。。。。。。。。。。。。。。
学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

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

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

相关文章

JS实现鼠标悬停变色

JS实现鼠标悬停变色 案例池子&#xff1a; JS实现鼠标悬停变色 JavaScript中的排他算法实现按钮单选 JavaScript中的localStorage JavaScript中的sessionStorage JavaScript实现网页关灯效果 JavaScript实现一段时间之后关闭广告 JavaScript实现按键快速获取输入框光标 …

第二证券|紧盯“有诺不行”隐疾 补齐上市公司高质量发展“短板”

有诺不可”的典型事例 “言而有信”是上市公司高质量开展的重要环节。近日&#xff0c;证监会印发的《推动提高上市公司质量三年举动计划&#xff08;2022-2025&#xff09;》&#xff08;下称《举动计划》&#xff09;提出&#xff0c;将着力处理管理领域杰出问题&#xff0c…

(Java)Thymeleaf学习笔记——动力节点

前言 学SpringMVC找课程时就了解到要学习thymeleaf这种Java模板引擎&#xff0c;但本着不用不学的原则就直接跳过&#xff0c;当实践第一个SpringMVC程序helloworld&#xff0c;遇见了thymeleaf&#xff0c;那么就先解决 &#x1f4a1;thymeleaf 知识点&#xff0c;再来学习Sp…

CSS新增样式----圆角边框、盒子阴影、文字阴影

在CSS中新增了三个样式&#xff0c;分别是圆角边框&#xff0c;盒子阴影&#xff0c;文字阴影。 初识圆角边框&#xff1a; border-radius属性用于设置元素的外边框圆角 语法如下&#xff1a; border-radius:length;原理如下&#xff1a; [椭]圆与边框的交集形成圆角效果。…

档案知识:声像档案的数字化处理与保存

声像档案是档案家族中较晚出现的成员&#xff0c;主要包括音像资料、图像资料、图片等&#xff0c;伴随着当今科技的发展进步&#xff0c;声像档案的数字化管理正逐步替代传统声像档案的管理方式&#xff0c;成为当前的发展主流。 虽然声像档案相较于传统文字档案&#xff0c;…

GFS分布式文件系统

GFS分布式文件系统 什么是GFS分布式文件系统 GFS&#xff08;GlusterFS&#xff09; 是一个开源的分布式文件系统。 由存储服务器、客户端以及NFS/Samba 存储网关&#xff08;可选&#xff0c;根据需要选择使用&#xff09;组成。 没有元数据服务器组件&#xff0c;这有助于提…

黑金ZYNQ7100配置HDMI驱动并测试

Linux系统移植系列 Linux系统移植专栏地址 https://blog.csdn.net/qq_41873311/category_12127932.html 一个写了五篇博客&#xff0c;成功在黑金ZYNQ7100搭建了属于我自己的Linux系统 但是缺少显示模块&#xff0c;所以本文就配置个HDMI驱动来完成图像的显示 环境 hdf设计…

N年后牛的数量

1、题目 第一年农场有 1 只成熟的母牛 A&#xff0c;往后的每年&#xff1a; 1&#xff09;每一只成熟的母牛都会生一只母牛 2&#xff09;每一只新出生的母牛都在出生的第三年成熟 3&#xff09;每一只母牛永远不会死 2、思路 举例说明&#xff1a; 可得到递推式为&…

文华财经期货量化策略抄底准确率高的指标公式,逃顶抄底精准共振起涨信号幅图指标

期货指标公式的万变不离...离均线远了就要往均线靠&#xff0c;这就是乖离。 做多的衰竭&#xff0c;做空的无力&#xff0c;也能根据乖离来判断。 量能的重要性不言而喻&#xff0c;他是一切做多做空的力量来源 摒弃了量能的趋势就是没有方向的车&#xff0c;金叉之后也可能突…

C++11 智能指针

文章目录1. 智能指针出现的意义1.1 内存泄漏1.2 智能指针初识2. C标准库中的智能指针2.1 auto_ptr2.2 std::unique_ptr2.3 std::shared_ptr2.4 std::weak_ptr3. 智能指针中的定制删除前言&#xff1a; 智能指针&#xff0c;它是指针嘛&#xff1f;它是一个类具有指针的功能&…

HTML期末学生大作业-拯救宠物网页作业html+css

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Redis主从复制与Cluster集群

目录 一.Redis集群模式 二、Redis 主从复制 2.1 主从复制介绍 2.2 主从复制的作用 2.3 主从复制流程&#xff1a; 三. Redis主从复制搭建 3.1 实验步骤 ​ 3.2 修改master节点配置文件 3.3 修改slave节点的配置文件 3.4 验证主从效果 3.4.1 主节点查看日志&#xff0…

数据图表-FineReport复选按钮控件

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 应用场景 1.2.1 填报控件 填报报表中可以通过该控件执行批量选中操作&#xff0c;如下图所示&#xff1a; 1.2.2 参数控件 参数面板处可以通过该控件执行查询操作&#xff0c;如下图所示&#xff1a; 1.3 如何添加…

APP上架需要的准备和流程

一上架iOS应用市场前的准备​ 1.选择适合自己的苹果开发者账号​ (1) 个人账号&#xff08;Individual&#xff09;&#xff1a;费用99美金一年, 该账号在App Store销售者只能显示个人的ID&#xff0c;比如zhitian zhang&#xff0c;单人使用。个人账号只能有一个开发者。100…

护眼灯护眼有效果吗?一文了解护眼灯到底有没有用

关于护眼灯是否对预防近视、保护眼睛有效&#xff0c;很多人都会有怀疑态度&#xff0c;会认为是智商税&#xff0c;其实这也因人而异&#xff0c;有的人眼睛天生不太敏感&#xff0c;所以对护眼灯的光线感知不强&#xff0c;很难体会到实际的作用&#xff1b;有的人也买到较差…

ccf寻宝!大冒险!python满分(敲开心~)

寻宝 大冒险 题目传送&#xff1a;http://118.190.20.162/view.page?gpidT147 思路及代码&#xff1a; 核心点就是哈希。 之前刷的是70分&#xff0c;找不到之前的代码了&#xff0c;大概是建了一个很大的表&#xff0c;然后一点点比较吧。 今天再刷&#xff0c;上来就是…

安装ADDIS

网状meta分析&#xff0c;安装ADDIS 下载ADDIS、java 百度网盘下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/15tqDxXUWZ2q3qOS2Fglvu 提取码&#xff1a;6fyw 配置java环境变量 双击系统变量中的Path 复制百度网盘下载后的jdk-11/bin的路径&#xff0c…

Apereo-cas 4.x反序列化漏洞复现

转载https://www.freebuf.com/vuls/226149.html 建议再查看https://xz.aliyun.com/t/7032#toc-7的 0x01 前言放假前看到很多文章对这个漏洞进行分析复现&#xff0c;又因为过年期间的特殊情况&#xff0c;实在是无聊至极&#xff0c;所以自己也来学习一下&#xff0c;顺便恶补一…

OceanBase-概述

文章目录背景产品家族分布式数据库社区版&#xff08;当前为V4.0&#xff09;企业版公有云总结核心功能适用场景工具体系迁移评估工具OMA迁移工具OMS开发工具ODC权限管理运维工具OCP生态产品图数据库时序数据库背景 前段时间学习了下tidb的体系架构&#xff0c;了解了其运行原…

vulhub中间件解析漏洞复现

vulhub中间件解析漏洞复现 &#x1f349; shell 此环境来自vulhub工程&#xff1a; https://github.com/vulhub/vulhub 以下测试环境为ubuntu 20.04 &#x1f349;目录vulhub中间件解析漏洞复现Apache HTTPD 换行解析漏洞&#xff08;CVE-2017-15715&#xff09;漏洞原理及…