Kubernetes可视化管理工具Kuboard部署使用及k8s常用命令梳理记录

news2024/11/28 16:50:19

温故知新

  • 📚第一章 前言
    • 📗背景
    • 📗目的
    • 📗总体方向
  • 📚第二章 安装 Kubernetes 多集群管理工具 - Kuboard v3
    • 📗部署方式
    • 📗通过Kuboard v3 - Kubernetes安装(在master节点执行)
      • 📕节点打标签
      • 📕执行apply 安装命令
      • 📕登录Kuboard
  • 📚第三章 k8s命令使用梳理记录
    • 📗`kubeadm`
    • 📗`kubectl `
  • ⁉️问题记录
    • ❓问题一:部署完Kuboard未产生agent容器,并且此时Kuboard也无法访问
      • ❗解决方式:指定节点标签为`k8s.kuboard.cn/role=etcd`
    • ❓问题二:`agent`容器没有部署时,无法访问`Kuboard`
    • ❓问题三:指定标签后,`agent`容器才会被部署?

🔼上一集:K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(下)

*️⃣主目录:温故知新专栏

🔽下一集:在Kubernetes集群中部署 DolphinScheduler 服务

📚第一章 前言

📗背景

在前面完成了k8s集群部署,除了知道现在节点状态都是ready,其他一无所知,到底怎么用呢?需要各种命令以及编辑各种配置文件,这么看来也不简单,难道没有可视化管理工具来方便大家操作?答案当然是有了!

[kubernetes@renxiaozhao01 ~]$ kubectl get nodes
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   4d17h   v1.28.1
k8s-node01   Ready    <none>          3d20h   v1.28.1
k8s-node02   Ready    <none>          3d19h   v1.28.1
[kubernetes@renxiaozhao01 ~]$ 

找到两款DashboardKuboard

  • Kuboard是一个基于Kubernetes的开源仪表盘工具,它提供了丰富的功能,可以帮助用户管理和监控Kubernetes集群

    • 优点包括
      • 功能丰富Kuboard提供了多种功能,包括集群监控资源管理日志查看应用部署等,可以满足用户大部分的需求。
      • 可视化界面Kuboard提供了直观的可视化界面,用户可以通过图表和图形化展示来了解集群的状态和性能。
      • 易于使用Kuboard提供了简单易用的操作界面,用户可以通过简单的操作完成复杂的任务。
    • 缺点包括
      • 学习成本较高Kuboard是一个相对复杂的工具,用户需要花费一些时间来学习和理解其使用方法和原理。
      • 不太适用非Kubernetes用户:Kuboard是基于Kubernetes的,对于没有使用Kubernetes的用户来说,可能无法充分发挥其功能。
  • Dashboard是Kubernetes官方提供的仪表盘工具,

    • 优点包括
      • 易于安装和使用Dashboard可以通过简单的命令安装,并提供了直观的操作界面,用户可以通过简单的操作完成集群管理和监控任务。
      • 功能相对简单:相比于KuboardDashboard的功能相对简单一些,主要提供了集群状态监控、资源查看等基本功能。
      • 社区支持好:作为Kubernetes官方提供的工具,Dashboard有很好的社区支持,用户可以在社区中获取到丰富的文档和教程。
    • 缺点包括
      • 功能相对有限:相比于KuboardDashboard的功能相对有限,对于一些高级的需求可能无法满足。
      • 可视化界面相对简陋Dashboard的可视化界面相对简陋一些,没有Kuboard提供的丰富的图表和图形化展示。

对于Kubernetes用户来说,如果需要一个功能丰富、可视化界面友好的仪表盘工具,可以考虑使用Kuboard;如果只需要基本的集群管理和监控功能,或者不希望投入太多学习成本,可以选择使用Dashboard,博主这里选择的是Kuboard

📗目的

部署Kuboard可视化管理界面,希望能够近距离观察集群,快速了解k8s使用

📗总体方向

参照Kuboard官网完成部署使用等操作

📚第二章 安装 Kubernetes 多集群管理工具 - Kuboard v3

官网安装地址,不会不支持k8s v1.28吧(里面还提供了k8sDashboard安装步骤,有兴趣的可以试试,通过界面安装,听着比较简单Kuboard-Spray - 是一款可以在图形界面引导下完成 Kubernetes 高可用集群离线安装的工具
在这里插入图片描述

📗部署方式

在这里插入图片描述

  • 安装Kuboard v3 - 内建用户库:这种方式是将Kuboard部署为一个独立的应用程序,该应用程序包含了自己的用户管理和认证系统。安装完成后,你可以使用Kuboard提供的用户界面进行集群管理和监控。这种方式适合那些希望快速部署和使用Kuboard的用户,因为它不需要依赖其他的用户管理系统。
  • 安装Kuboard v3 - GitLab:这种方式是将Kuboard与GitLab集成,使用GitLab作为用户管理和认证系统。安装完成后,你可以通过GitLab的用户界面进行集群管理和监控。这种方式适合那些已经在使用GitLab的用户,因为它可以与现有的GitLab用户管理系统集成。
  • 安装Kuboard v3 - GitHub:这种方式是将Kuboard与GitHub集成,使用GitHub作为用户管理和认证系统。安装完成后,你可以通过GitHub的用户界面进行集群管理和监控。这种方式适合那些已经在使用GitHub的用户,因为它可以与现有的GitHub用户管理系统集成。
  • 安装Kuboard v3 - LDAP:这种方式是将Kuboard与LDAP(轻量级目录访问协议)集成,使用LDAP作为用户管理和认证系统。安装完成后,你可以通过LDAP的用户界面进行集群管理和监控。这种方式适合那些已经在使用LDAP的用户,因为它可以与现有的LDAP用户管理系统集成。
  • 安装Kuboard v3 - Kubernetes:这种方式是将Kuboard部署为一个Kubernetes应用程序。在这种方式下,Kuboard将使用Kubernetes本身的用户管理和认证系统。安装完成后,你可以通过Kubernetes的API或命令行工具与Kuboard进行交互。这种方式适合那些已经在使用Kubernetes的用户,因为它可以与现有的Kubernetes集群和用户管理系统集成
  • 安装Kuboard v3 - static pod:Static Pod是一种特殊类型的Pod,它由kubelet直接管理,而不是通过Kubernetes API服务器。在Static Pod的定义文件中,可以指定Kuboard的容器镜像和其他相关配置。通过使用Static Pod的方式安装Kuboard,可以确保Kuboard在Kubernetes集群启动时自动运行,并且与集群的其他组件无缝集成。这种安装方式适合那些希望将Kuboard作为Kubernetes集群的一部分进行部署的用户。它可以确保Kuboard始终与集群一起运行,并且不受其他用户管理和认证系统的限制。然而,需要注意的是,使用Static Pod安装方式后,Kuboard将无法通过Kubernetes API访问,只能通过Kuboard提供的用户界面进行管理和监控

📗通过Kuboard v3 - Kubernetes安装(在master节点执行)

📕节点打标签

节点打上etcd标签,否则看不到agent服务,并且无法访问登录页面(目前观察到现象如此,具体不详)

[kubernetes@renxiaozhao01 ~]$ kubectl get nodes
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   4d20h   v1.28.1
k8s-node01   Ready    <none>          3d23h   v1.28.1
k8s-node02   Ready    <none>          3d22h   v1.28.1
[kubernetes@renxiaozhao01 ~]$ 
[kubernetes@renxiaozhao01 ~]$ 
[kubernetes@renxiaozhao01 ~]$ kubectl label nodes k8s-master  k8s.kuboard.cn/role=etcd
node/k8s-master labeled
[kubernetes@renxiaozhao01 ~]$ kubectl label nodes k8s-node01  k8s.kuboard.cn/role=etcd
node/k8s-node01 labeled
[kubernetes@renxiaozhao01 ~]$ kubectl label nodes k8s-node02  k8s.kuboard.cn/role=etcd
node/k8s-node02 labeled
[kubernetes@renxiaozhao01 ~]$ 

📕执行apply 安装命令

执行安装命令

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
# 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
[kubernetes@renxiaozhao01 ~]$ kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
namespace/kuboard created
configmap/kuboard-v3-config created
serviceaccount/kuboard-boostrap created
clusterrolebinding.rbac.authorization.k8s.io/kuboard-boostrap-crb created
daemonset.apps/kuboard-etcd created
deployment.apps/kuboard-v3 created
service/kuboard-v3 created
[kubernetes@renxiaozhao01 ~]$ 
[kubernetes@renxiaozhao01 ~]$ 
[kubernetes@renxiaozhao01 ~]$ kubectl get pods -n kuboard 
NAME                              READY   STATUS    RESTARTS   AGE
kuboard-agent-2-99bcb9d7c-2g89d   1/1     Running   0          4m58s
kuboard-agent-54b6d87bcf-mjw98    1/1     Running   0          4m58s
kuboard-etcd-9g2zl                1/1     Running   0          5m43s
kuboard-etcd-hvzbt                1/1     Running   0          5m43s
kuboard-etcd-l86jz                1/1     Running   0          5m43s
kuboard-v3-7979bc788f-gt8fr       1/1     Running   0          5m43s
[kubernetes@renxiaozhao01 ~]$ 

在这里插入图片描述

📕登录Kuboard

  • 登录地址:http://192.168.17.17:30080192.168.17.17安装Kuboard的地址,也是master节点IP
  • 输入初始用户名和密码:用户名: admin 密码: Kuboard123
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

📚第三章 k8s命令使用梳理记录

📗kubeadm

  • init: master节点执行,初始化集群
    sudo kubeadm init --node-name=k8s-master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.17.17 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
    
  • master节点执行,重新生成join命令:kubeadm token create --print-join-command
  • join :node节点上面执行,加入master
    sudo kubeadm join 192.168.17.17:6443 --token 4ydg4t.7cjjm52hd4p86gmk --discovery-token-ca-cert-hash sha256:ee2c3ae1c2d702b77a0b52f9dafe734aa7e25f33c44cf7fa469c1adc8c176be1 --cri-socket=unix:///var/run/cri-dockerd.sock
    

📗kubectl

  • 查看节点状态:kubectl get nodes

    [kubernetes@renxiaozhao01 ~]$ kubectl  get nodes
    NAME         STATUS   ROLES           AGE     VERSION
    k8s-master   Ready    control-plane   4d21h   v1.28.1
    k8s-node01   Ready    <none>          4d      v1.28.1
    k8s-node02   Ready    <none>          4d      v1.28.1
    
  • 查看容器状态:-n 指定空间名 -A 查看所有 -owide 详细信息

    [kubernetes@renxiaozhao01 ~]$ kubectl get pods -n kuboard 
    NAME                              READY   STATUS    RESTARTS   AGE
    kuboard-agent-2-99bcb9d7c-2g89d   1/1     Running   0          74m
    kuboard-agent-54b6d87bcf-mjw98    1/1     Running   0          74m
    kuboard-etcd-9g2zl                1/1     Running   0          75m
    kuboard-etcd-hvzbt                1/1     Running   0          75m
    kuboard-etcd-l86jz                1/1     Running   0          75m
    kuboard-v3-7979bc788f-gt8fr       1/1     Running   0          75m
    [kubernetes@renxiaozhao01 ~]$ 
    [kubernetes@renxiaozhao01 ~]$ 
    
    [kubernetes@renxiaozhao01 ~]$ kubectl get pods -A
    NAMESPACE      NAME                                 READY   STATUS    RESTARTS        AGE
    kube-flannel   kube-flannel-ds-d96z9                1/1     Running   0               4d
    kube-flannel   kube-flannel-ds-gt6v2                1/1     Running   0               4d7h
    kube-flannel   kube-flannel-ds-rc8vq                1/1     Running   2 (3d21h ago)   4d
    kube-system    coredns-66f779496c-6l8gn             1/1     Running   0               4d21h
    kube-system    coredns-66f779496c-f5nnv             1/1     Running   0               4d21h
    kube-system    etcd-k8s-master                      1/1     Running   3 (4d5h ago)    4d21h
    kube-system    kube-apiserver-k8s-master            1/1     Running   3 (4d5h ago)    4d21h
    kube-system    kube-controller-manager-k8s-master   1/1     Running   3 (4d5h ago)    4d21h
    kube-system    kube-proxy-8t9mp                     1/1     Running   3 (3d21h ago)   4d
    kube-system    kube-proxy-flqbf                     1/1     Running   0               4d
    kube-system    kube-proxy-sqckd                     1/1     Running   3 (4d5h ago)    4d21h
    kube-system    kube-scheduler-k8s-master            1/1     Running   3 (4d5h ago)    4d21h
    kuboard        kuboard-agent-2-99bcb9d7c-2g89d      1/1     Running   0               74m
    kuboard        kuboard-agent-54b6d87bcf-mjw98       1/1     Running   0               74m
    kuboard        kuboard-etcd-9g2zl                   1/1     Running   0               75m
    kuboard        kuboard-etcd-hvzbt                   1/1     Running   0               75m
    kuboard        kuboard-etcd-l86jz                   1/1     Running   0               75m
    kuboard        kuboard-v3-7979bc788f-gt8fr          1/1     Running   0               75m
    [kubernetes@renxiaozhao01 ~]$ 
    
    [kubernetes@renxiaozhao01 ~]$ kubectl get pod -n kube-flannel  -owide
    NAME                    READY   STATUS    RESTARTS        AGE    IP              NODE         NOMINATED NODE   READINESS GATES
    kube-flannel-ds-d96z9   1/1     Running   0               4d     192.168.17.18   k8s-node01   <none>           <none>
    kube-flannel-ds-gt6v2   1/1     Running   0               4d7h   192.168.17.17   k8s-master   <none>           <none>
    kube-flannel-ds-rc8vq   1/1     Running   2 (3d21h ago)   4d     192.168.17.19   k8s-node02   <none>           <none>
    [kubernetes@renxiaozhao01 ~]$ 
    
    
    [kubernetes@renxiaozhao01 ~]$ kubectl get pod 
    No resources found in default namespace.
    [kubernetes@renxiaozhao01 ~]$ kubectl get pods
    No resources found in default namespace.
    [kubernetes@renxiaozhao01 ~]$ 
    
    
  • 服务日志查看:

    • 可以显示完整的日志,通过分页功能进行浏览,但是有可能出现日志显示不完整(不自动换行)的情况
      sudo journalctl -u kubelet
      
    • 显示更详细的信息,包括错误和警告。显示的是最新的日志条目,并且会自动滚动以显示最新的日志。它还会显示与Kubelet服务相关的其他系统日志。
      sudo journalctl -xeu kubelet
      
    • 以实时模式持续显示最新的日志(去掉--follow将会一次性显示所有已有的日志内容,并且不会持续更新。这可能会导致终端缓冲区溢出或无法完全显示所有的日志内容)。
      sudo journalctl -u kubelet --no-pager --follow
      
  • 其他命令

    [kubernetes@renxiaozhao01 ~]$ # 查看CoreDNS和kube-apiserver服务
    [kubernetes@renxiaozhao01 ~]$ kubectl cluster-info
    Kubernetes control plane is running at https://192.168.17.17:6443
    CoreDNS is running at https://192.168.17.17:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
    [kubernetes@renxiaozhao01 ~]$ 
    [kubernetes@renxiaozhao01 ~]$ # 查看集群组件状态
    [kubernetes@renxiaozhao01 ~]$ kubectl get componentstatus
    Warning: v1 ComponentStatus is deprecated in v1.19+
    NAME                 STATUS    MESSAGE   ERROR
    scheduler            Healthy   ok        
    controller-manager   Healthy   ok        
    etcd-0               Healthy   ok        
    [kubernetes@renxiaozhao01 ~]$ 
    [kubernetes@renxiaozhao01 ~]$ kubectl version
    Client Version: v1.28.1
    Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
    Server Version: v1.28.1
    [kubernetes@renxiaozhao01 ~]$ 
    
    

主要整理了这几天用到的命令,其他命令等用到了,以后再补充吧

⁉️问题记录

❓问题一:部署完Kuboard未产生agent容器,并且此时Kuboard也无法访问

❗解决方式:指定节点标签为k8s.kuboard.cn/role=etcd

  • 指定标签(master也要指定)
    [kubernetes@renxiaozhao01 ~]$ kubectl label nodes k8s-node01  k8s.kuboard.cn/role=etcd
    node/k8s-node01 labeled
    [kubernetes@renxiaozhao01 ~]$ kubectl label nodes k8s-node02  k8s.kuboard.cn/role=etcd
    node/k8s-node02 labeled
    [kubernetes@renxiaozhao01 ~]$
    
  • 重新apply:kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
  • 再次查看kuboard容器状态:kubectl get pods -n kuboard
  • 如果还是没生效,则先删除kuboard,然后再apply
    [kubernetes@renxiaozhao01 ~]$ 
    [kubernetes@renxiaozhao01 ~]$ kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
    namespace "kuboard" deleted
    configmap "kuboard-v3-config" deleted
    serviceaccount "kuboard-boostrap" deleted
    clusterrolebinding.rbac.authorization.k8s.io "kuboard-boostrap-crb" deleted
    daemonset.apps "kuboard-etcd" deleted
    deployment.apps "kuboard-v3" deleted
    service "kuboard-v3" deleted
    [kubernetes@renxiaozhao01 ~]$ ll /usr/share/kuboard
    总用量 0
    drwxr-xr-x 3 root root 20 93 14:45 etcd
    [kubernetes@renxiaozhao01 ~]$ sudo rm -rf /usr/share/kuboard
    [kubernetes@renxiaozhao01 ~]$ 
    

❓问题二:agent容器没有部署时,无法访问Kuboard

  • 在Kubernetes集群中,agent容器是Kuboard的核心组件之一,负责收集和展示集群的状态和信息。当agent容器没有部署时,Kuboard无法正常工作,因此无法通过http://your-node-ip-address:30080访问。
  • 当您在节点上指定了标签k8s.kuboard.cn/role=etcd并部署了agent容器后,Kuboard开始正常工作
  • agent容器负责与Kubernetes集群交互,收集集群的状态和信息,并将其展示在Kuboard的Web界面上。
  • agent容器部署成功后,您可以通过http://your-node-ip-address:30080访问Kuboard的登录界面。

总之,agent容器的部署与Kuboard的正常功能和访问有直接关系。只有在agent容器成功部署并运行后,Kuboard才能提供可访问的Web界面。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

❓问题三:指定标签后,agent容器才会被部署?

kuboard-v3.yaml文件中定义了agent容器的部署策略,并且要求特定的标签k8s.kuboard.cn/role=etcd存在于节点上。这意味着只有带有该标签的节点才会部署agent容器(可以看到kuboard-v3-swr.yaml中有类似nodeSelectortolerations的字段,这些字段可以限制容器的部署条件)。
在这里插入图片描述
源文件内容

---
apiVersion: v1
kind: Namespace
metadata:
  name: kuboard

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: kuboard-v3-config
  namespace: kuboard
data:
  # 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-built-in.html
  # [common]
  KUBOARD_SERVER_NODE_PORT: '30080'
  KUBOARD_AGENT_SERVER_UDP_PORT: '30081'
  KUBOARD_AGENT_SERVER_TCP_PORT: '30081'
  KUBOARD_SERVER_LOGRUS_LEVEL: info  # error / debug / trace
  # KUBOARD_AGENT_KEY 是 Agent 与 Kuboard 通信时的密钥,请修改为一个任意的包含字母、数字的32位字符串,此密钥变更后,需要删除 Kuboard Agent 重新导入。
  KUBOARD_AGENT_KEY: 32b7d6572c6255211b4eec9009e4a816
  KUBOARD_AGENT_IMAG: swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-agent
  KUBOARD_QUESTDB_IMAGE: swr.cn-east-2.myhuaweicloud.com/kuboard-dependency/questdb:6.0.4
  KUBOARD_DISABLE_AUDIT: 'false' # 如果要禁用 Kuboard 审计功能,将此参数的值设置为 'true',必须带引号。

  # 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-gitlab.html
  # [gitlab login]
  # KUBOARD_LOGIN_TYPE: "gitlab"
  # KUBOARD_ROOT_USER: "your-user-name-in-gitlab"
  # GITLAB_BASE_URL: "http://gitlab.mycompany.com"
  # GITLAB_APPLICATION_ID: "7c10882aa46810a0402d17c66103894ac5e43d6130b81c17f7f2d8ae182040b5"
  # GITLAB_CLIENT_SECRET: "77c149bd3a4b6870bffa1a1afaf37cba28a1817f4cf518699065f5a8fe958889"
  
  # 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-github.html
  # [github login]
  # KUBOARD_LOGIN_TYPE: "github"
  # KUBOARD_ROOT_USER: "your-user-name-in-github"
  # GITHUB_CLIENT_ID: "17577d45e4de7dad88e0"
  # GITHUB_CLIENT_SECRET: "ff738553a8c7e9ad39569c8d02c1d85ec19115a7"

  # 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-ldap.html
  # [ldap login]
  # KUBOARD_LOGIN_TYPE: "ldap"
  # KUBOARD_ROOT_USER: "your-user-name-in-ldap"
  # LDAP_HOST: "ldap-ip-address:389"
  # LDAP_BIND_DN: "cn=admin,dc=example,dc=org"
  # LDAP_BIND_PASSWORD: "admin"
  # LDAP_BASE_DN: "dc=example,dc=org"
  # LDAP_FILTER: "(objectClass=posixAccount)"
  # LDAP_ID_ATTRIBUTE: "uid"
  # LDAP_USER_NAME_ATTRIBUTE: "uid"
  # LDAP_EMAIL_ATTRIBUTE: "mail"
  # LDAP_DISPLAY_NAME_ATTRIBUTE: "cn"
  # LDAP_GROUP_SEARCH_BASE_DN: "dc=example,dc=org"
  # LDAP_GROUP_SEARCH_FILTER: "(objectClass=posixGroup)"
  # LDAP_USER_MACHER_USER_ATTRIBUTE: "gidNumber"
  # LDAP_USER_MACHER_GROUP_ATTRIBUTE: "gidNumber"
  # LDAP_GROUP_NAME_ATTRIBUTE: "cn"

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kuboard-boostrap
  namespace: kuboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kuboard-boostrap-crb
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kuboard-boostrap
  namespace: kuboard

---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    k8s.kuboard.cn/name: kuboard-etcd
  name: kuboard-etcd
  namespace: kuboard
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/name: kuboard-etcd
  template:
    metadata:
      labels:
        k8s.kuboard.cn/name: kuboard-etcd
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: node-role.kubernetes.io/master
                    operator: Exists
              - matchExpressions:
                  - key: node-role.kubernetes.io/control-plane
                    operator: Exists
              - matchExpressions:
                  - key: k8s.kuboard.cn/role
                    operator: In
                    values:
                      - etcd
      containers:
        - env:
            - name: HOSTNAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: spec.nodeName
            - name: HOSTIP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.hostIP
          image: 'swr.cn-east-2.myhuaweicloud.com/kuboard/etcd-host:3.4.16-2'
          imagePullPolicy: Always
          name: etcd
          ports:
            - containerPort: 2381
              hostPort: 2381
              name: server
              protocol: TCP
            - containerPort: 2382
              hostPort: 2382
              name: peer
              protocol: TCP
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /health
              port: 2381
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          volumeMounts:
            - mountPath: /data
              name: data
      dnsPolicy: ClusterFirst
      hostNetwork: true
      restartPolicy: Always
      serviceAccount: kuboard-boostrap
      serviceAccountName: kuboard-boostrap
      tolerations:
        - key: node-role.kubernetes.io/master
          operator: Exists
        - key: node-role.kubernetes.io/control-plane
          operator: Exists
      volumes:
        - hostPath:
            path: /usr/share/kuboard/etcd
          name: data
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate


---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/name: kuboard-v3
  name: kuboard-v3
  namespace: kuboard
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/name: kuboard-v3
  template:
    metadata:
      labels:
        k8s.kuboard.cn/name: kuboard-v3
    spec:
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - preference:
                matchExpressions:
                  - key: node-role.kubernetes.io/master
                    operator: Exists
              weight: 100
            - preference:
                matchExpressions:
                  - key: node-role.kubernetes.io/control-plane
                    operator: Exists
              weight: 100
      containers:
        - env:
            - name: HOSTIP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.hostIP
            - name: HOSTNAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: spec.nodeName
          envFrom:
            - configMapRef:
                name: kuboard-v3-config
          image: 'swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3'
          imagePullPolicy: Always
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /kuboard-resources/version.json
              port: 80
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: kuboard
          ports:
            - containerPort: 80
              name: web
              protocol: TCP
            - containerPort: 443
              name: https
              protocol: TCP
            - containerPort: 10081
              name: peer
              protocol: TCP
            - containerPort: 10081
              name: peer-u
              protocol: UDP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /kuboard-resources/version.json
              port: 80
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources: {}
          # startupProbe:
          #   failureThreshold: 20
          #   httpGet:
          #     path: /kuboard-resources/version.json
          #     port: 80
          #     scheme: HTTP
          #   initialDelaySeconds: 5
          #   periodSeconds: 10
          #   successThreshold: 1
          #   timeoutSeconds: 1
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      serviceAccount: kuboard-boostrap
      serviceAccountName: kuboard-boostrap
      tolerations:
        - key: node-role.kubernetes.io/master
          operator: Exists

---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/name: kuboard-v3
  name: kuboard-v3
  namespace: kuboard
spec:
  ports:
    - name: web
      nodePort: 30080
      port: 80
      protocol: TCP
      targetPort: 80
    - name: tcp
      nodePort: 30081
      port: 10081
      protocol: TCP
      targetPort: 10081
    - name: udp
      nodePort: 30081
      port: 10081
      protocol: UDP
      targetPort: 10081
  selector:
    k8s.kuboard.cn/name: kuboard-v3
  sessionAffinity: None
  type: NodePort

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

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

相关文章

大学生攻略:正确的购买和使用你的电脑

笔者是计算机专业在读大学生&#xff0c;从小学开始接触电脑&#xff0c;进行过各种操作(更换硬件维修&#xff0c;换系统&#xff0c;系统命令行&#xff0c;管理员权限&#xff0c;无视风险继续安装&#xff0c;没有这条 )&#xff0c;相对大学生有一定参考价值。 购买 1.买…

【Java并发】聊聊AQS原理机制

什么是AQS AbstractQueuedSynchronizer是一个抽象队列同步器&#xff0c;主要是实现并发工具类的基石。 是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石&#xff0c; 通过内置的FIFO队列来完成资源获取线程的排队工作&#xff0c;并通过一个int类变量表示…

仿京东 项目笔记1

目录 项目代码1. 项目配置2. 前端Vue核心3. 组件的显示与隐藏用v-if和v-show4. 路由传参4.1 路由跳转有几种方式&#xff1f;4.2 路由传参&#xff0c;参数有几种写法&#xff1f;4.3 路由传参相关面试题4.3.1 路由传递参数&#xff08;对象写法&#xff09;path是否可以结合pa…

MyBatis-Plus —— 初窥门径

前言 在前面的文章中荔枝梳理了MyBatis及相关的操作&#xff0c;作为MyBatis的增强工具&#xff0c;MyBatis-Plus无需再在xml中写sql语句&#xff0c;在这篇文章中荔枝将梳理MyBatis-Plus的基础知识并基于SpringBoot梳理MyBatis-Plus给出的两个接口&#xff1a;BaseMapper和ISe…

【微服务部署】三、Jenkins+Maven插件Jib一键打包部署SpringBoot应用Docker镜像步骤详解

前面我们介绍了K8SDockerMaven插件打包部署SpringCloud微服务项目&#xff0c;在实际应用过程中&#xff0c;很多项目没有用到K8S和微服务&#xff0c;但是用到了Docker和SpringBoot&#xff0c;所以&#xff0c;我们这边介绍&#xff0c;如果使用Jenkinsjib-maven-plugin插件打…

第 3 章 栈和队列 (循环队列)

1. 背景说明 和顺序栈相类似&#xff0c;在队列的顺序存储结构中&#xff0c;除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外&#xff0c; 尚需附设两个指针 front 和 rear 分别指示队列头元素及队列尾元素的位置。约定&#xff1a;初始化建空队列时&#x…

测试人:“躺平?不可能的“, 盘点测试人在职场的优势

之前有这么一个段子&#xff1a;有人喜欢创造世界&#xff0c;他们做了程序员&#xff1b;有人喜欢拯救世界&#xff0c;他们做了测试员&#xff01;近几年&#xff0c;测试工程师在企业究竟是怎么样的发展&#xff1f;随着企业对于用户体验的满意度越来越重视&#xff0c;更加…

vue 从后端取图片返回发现是两张,但自己只要一张图片 怎么操作

1.用JavaScript里边常用的分隔符去操作 item.original_status.user.profile_image_url.split(,)[0] <van-imagewidth"100"height"100":src"item.original_status.user.photo_domain item.original_status.user.profile_image_url.split(,)[0]&quo…

排序算法学习记录-快速排序

快速排序 快速排序关键在于确定一个中间值&#xff0c;使得小于这个中间值的数在左边&#xff0c;大于这个中间值的数在右边。那么中间值该如何确定呢&#xff1f;有以下几种做法 首元素&#xff0c;也就是arr[l]尾元素&#xff0c;也就是arr[r]中间元素&#xff0c;也就是ar…

编译问题:error: ‘printf’ was not declared in this scope

这个错误提示意味着编译器在当前作用域内无法找到 printf 函数的声明。这通常是因为没有包含 <stdio.h> 头文件导致的。 解决方法是在程序中添加 #include <stdio.h> 这一行代码。这个头文件中包含了 printf 函数的声明&#xff0c;告诉编译器如何处理该函数。

第五讲:ADO连接Access前期绑定与后期绑定方法实例(上)

【分享成果&#xff0c;随喜正能量】说到得失&#xff0c;不管是得是失&#xff0c;都各有因缘。是我的&#xff0c;不必力争&#xff0c;自会得到&#xff1b;不是你的&#xff0c;即使千方百计取得&#xff0c;也会随风而逝。 如果你想获得安宁与自由&#xff0c; 那么让脚步…

浅析ARMv8体系结构:异常处理机制

文章目录 概述异常类型中断终止Abort复位Reset系统调用 异常处理流程异常入口异常返回异常返回地址 堆栈选择 异常向量表异常向量表的配置 同步异常解析相关参考 概述 异常处理指的是处理器在运行过程中发生了外部事件&#xff0c;导致处理器需要中断当前执行流程转而去处理异…

swaggo的一点小理解

如有错误&#xff0c;希望指出&#xff0c;谢谢&#xff01; 很低级的概念不清&#xff0c;大佬嘴下留情。 1.关于swag的注释 我的理解是这些注释是专门提供给Swagger UI界面测试使用的&#xff0c;根据注释内容告诉swag文档这个函数应该有哪些参数&#xff0c;从什么路由走&…

基于图像切割计算轨迹相似度

目录 背景思路与核心代码数值实验优缺点分析参考文献 背景 在前面2文&#xff0c;我们分别讨论了利用夹角余弦来计算轨迹相似度和利用缓冲原理来计算轨迹相似度两种方法&#xff0c;前者可以作为一个baseline提供参考&#xff0c;后者的计算更符合人们的感官和事实&#xff0c…

1. 企业大数据开发流程

文章目录 1. 数据建设流程1.1 业务需求&#xff08;占40%&#xff09;1.2 需求调研1.3 概要设计1.4 详细设计1.5 数据开发&#xff08;占20%&#xff09;1.6 数据交付 学习链接 1. 数据建设流程 即当我们接到一个新的需求后&#xff08;需求文档&#xff09;&#xff0c;我们应…

vmware 16增加硬盘容量并在Ubuntu 18.04上边格式化并挂载

参考了《增加 VM虚拟机硬盘容量》 《Linux学习之分区挂载》中有给VMWare 16虚拟机添加一块硬盘的内容&#xff0c;需要先参考添加硬盘。 sudo mkfs.ext4 /dev/sda4给/dev/sda4进行ext4格式化。 sudo mkdir /mountsda4新建一个挂载目录。 sudo mount -t ext4 /dev/sda4 /mo…

羊城杯-2023-Crypto

文章目录 Danger_RSA题目描述&#xff1a;题目分析&#xff1a; Easy_3L题目描述&#xff1a;题目分析&#xff1a; XOR贯穿始终题目描述&#xff1a;题目分析&#xff1a; MCeorpkpleer题目描述&#xff1a;题目分析&#xff1a; SigninCrypto题目描述&#xff1a;题目分析&am…

项目——群英阁(galaxyHub)

目录 一、项目概述二、设计思路三、项目流程四、项目代码头文件&#xff1a;&#x1f447;server端&#xff1a;&#x1f447;client端&#xff1a;&#x1f447; 五、运行效果 一、项目概述 项目中文名称&#xff1a;群英阁 项目英文名称&#xff1a;galaxyHub 利用UDP通信实现…

HikariCP源码修改,使其连接池支持Kerberos认证

HikariCP-4.0.3 修改HikariCP源码,使其连接池支持Kerberos认证 修改后的Hikari源码地址:https://github.com/Raray-chuan/HikariCP-4.0.3 Springboot使用hikari连接池并进行Kerberos认证访问Impala的demo地址:https://github.com/Raray-chuan/springboot-kerberos-hikari-im…

Lambda表达式第三版,从3个方面分析。(①抽象方法无参数无返回值,②抽象方法带参数无返回值,③抽象方法带参数有返回值)

1、函数式编程思想概述 在数学中&#xff0c;函数就是有输入量、输出量的一套计算方案&#xff0c;也就是”拿数据做操作“面向对象思想强调”必须通过对象的形式来做事情“函数式思想则尽量忽略面向对象的复杂语法&#xff1a;”强调做什么&#xff0c;而不是以什么形式去做&a…