半兽人

308 声望

只有比别人更早、更勤奋地努力,才能尝到成功的滋味。

只有比别人更早、更勤奋地努力,才能尝到成功的滋味。

个人动态
  • 半兽人 回复 whatJenkins JNLP和SSH的区别是什么? 中 :

    Jenkins在并发场景下,需要采用分布式构建的方式缓解压力,主要方式之一主多从(Master/Slave)。Master主要用于作业(job)的分配以及用户操作的交互等,而Slave则用于处理实际构建作业等。

    主要核心区别是:

    • SSH是Master主动连接Slave
    • JNLP是Slave主动连接Master

    SSH的方式

    当你在Master配好了一台机器的账密,那么Master就可以通过账密SSH到这台机器执行命令,所以SSH是Master主动连接Slave

    JNLP的方式

    JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序。

    这个只是技术方式,其核心是Slave上的节点,主动运行一个agent程序与Master建立连接,接收并执行Master传递的Job,然后将结果反馈给Master。这个好处是不需要配置账密了。

    ps:你想象一下你有很多机器的时候,每个都要在jenkins上配置多麻烦。

    13小时前
  • 半兽人 回复 W新接口cpu飙升,求解 中 :

    那么假设:因为原来是一次一次的,中途消耗在了路上很久,A也要等发完继续发,B服务的压力没那么大。
    而优化后,中途没了消耗,A也可以没阻碍的一个批次一个批次的发了,一下全在B服务了,B服务就YY了。

    2天前
  • 面子 赞了 在 Kubernetes如何删除已完成的pod(completed)? 的评论!

    你可以很轻松地清理。

    可以通过以下方式列出所有已完成的pod:

    kubectl get pod --field-selector=status.phase==Succeeded
    

    并通过以下方式删除所有已完成的pod:

    kubectl delete pod --field-selector=status.phase==Succeeded
    
    2天前
  • 3天前
  • 半兽人 回复 W新接口cpu飙升,求解 中 :

    首先你要确认B服务端的最大能力。

    比如默认B服务端最大可以开100个线程,当同时并发达到50个线程的时候,cpu已经达到了80%,那么你知道这个已经是极限了。

    所以,如果你希望保证健壮,就会把最大线程数控制在50以内,你要做到的是让cpu永远达不到80%。

    最后,cpu升高,那么同一时刻,到底有多少线程在working,如果正比上升,那就是很合理。

    ps:业务bug导致的cpu飙升另说

    3天前
  • 妄青山 回复 半兽人kafka发送数据到队列前丢失 中 :

    谢大佬,明天我去复现试试看。

    3天前
  • 半兽人 回复 妄青山kafka发送数据到队列前丢失 中 :

    两台电脑都会发生这种情况吧

    是的,另外一台电脑可能结束的没那么果断,如果数据都是一致的情况下,多试几次就可能复现了。

    核心就是这个原因导致的,程序逻辑就要看你自己找原因了。

    有个点你要注意,如果你的进程持续watch永远不停止,producer理论是长连接,producer是单例,也不会销毁,所以最终消息还是会发送成功。所以如果你每次都是new producer,那么你的设计可能要在改改了。

    3天前
  • W 赞了 在 kafka单partition lag飙升,怎么解决 的评论!

    首先,你这个客户端版本太老了,已经弃用很久了,不排除版本兼容性问题。

    参考新版的消费者方式:kafka消费者Java客户端
    或者我之前写的例子:kafka客户端 - java

    其次,多线程消费导致的,这块非常容易出问题,线程池必须是阻塞式的,就是你多线程池子虽然设置的上限是5个,但是其实你可以无限往里面丢(比如默认有1万的队列),但是在里面排队,真正处理的是5个,也会导致这个问题。

    7天前
  • W 关注了Ta · 7天前
  • ╭ァ回忆、独酔 贬了 在 Kubernetes Deployment介绍 的评论!

    containers中,容器的名称。

    8天前
  • 9天前
  • 9天前
  • ╭ァ回忆、独酔 贬了 在 Kubernetes Deployment介绍 的评论!

    containers中,容器的名称。

    9天前
  • 惜爱 关注了Ta · 16天前
  • 16天前
  • 没干嘛 关注了Ta · 27天前
  • 没干嘛 赞了 半兽人 kafka命令大全 · 27天前
  • 小梁。 贬了 在 kafka 集群启动后,系统缓存一直增大 的评论!

    页缓存利用了可利用的空闲内存,一次性flush数据到磁盘,这样性能最高。

    另外,你的吞吐是如何判断的?我需要知道你具体是这么评判的

    29天前
  • 沉鱼 贬了 在 Kafka Consumer配置 的评论!

    你得通过命令,看到整个集群的状态,我才能帮你分析。

    ## 查询集群描述
    bin/kafka-topics.sh --describe --zookeeper
    

    你可以到问题专区里提问,这里施展不开

    1月前
  • 赞了 半兽人kafka入门介绍 的评论!

    厉害,终于找到一往篇讲的很透的文章,所有疑问基本都能评论区找到答案

    1月前
  • peter 关注了Ta · 1月前
  • 丑东西 关注了Ta · 1月前
  • 赞了 半兽人kafka过期日志不删除,topic命令删除后,topic删了但是日志文件不删除 的评论!

    问题解决了。但是原因具体原因不能确定。如果有相同情况,可以按照这个思路排查看看。
    我们服务器是arm架构,但是jdk没有使用arm架构的,替换了jdk版本后文件正常删除了。

    1月前
  • 赞了 半兽人疑似kafka broker不稳定导致提交offset失败,导致重复消费 的评论!

    改了之后:虽然钉钉还会在网络波动的时候报警,因为数据从生产到目标topic大概会用1分钟时间。但是再也没有重复消费情况了。感谢!

    4月前
  • 赞了 半兽人到底什么是面向对象设计(实例) 的评论!

    啊,不知道理解的对不对?:
    第一个代码是:病人是对象,注射类型、是否注射、病人都是其属性。显然这些东西作为病人的属性是不“面向对象的”。就比如我们不能说猫是狗的对象,只能说狗有个属性是玩,把对象猫给它,它就能玩了。
    第二个代码是:病人是对象,他有个方法是注射疫苗,直接调方法就能实现功能。但是细节未知。
    第三个代码是:病人、护士、疫苗都是不同对象,先选出疫苗类型,护士可以做的事是打标准疫苗,只要将疫苗和病人给护士,护士就能完成这个事情。

    4月前
  • 关注了 {{10030 | filter2}} · 4月前
  • 关注了用户 _ · 5月前
  • 赞了 半兽人kafka消费端消费一批消息时有时候开头几条消息没有被消费到是什么问题? 的评论!

    消费者是批量拉取消息,也就是说在你停止项目的时候,如果此时刚拉取了消息,提交offsr,但程序只处理一部分,那剩下的消息就会漏掉。

    7月前
  • 赞了 半兽人kafka入门介绍 的评论!

    不是说了这句话嘛:相同的消费者组中不能有比分区更多的消费者,否则多出的消费者一直处于空等待,不会收到消息

    7月前
  • 关注了 {{10648 | filter2}} · 7月前
  • 关注了用户 Lance.Wu · 10月前
  • 赞了 半兽人kubernetes测试环境有多个项目空间如何创建一个serviceaccount可以访问所有项目? 的评论!

    创建serviceaccount

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: sa-all
      namespace: test-namespace
    

    创建一个是集群角色(设置访问权限)

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      annotations:
        rbac.authorization.kubernetes.io/autoupdate: "true"
      labels:
        kubernetes.io/bootstrapping: rbac-defaults
      name: cluster-role-all
    rules:
    - apiGroups:
      - '*'
      resources:
      - '*'
      verbs:
      - '*'
    - nonResourceURLs:
      - '*'
      verbs:
      - '*'
    

    *代表所有。

    verbs包括 ["get", "list", "watch", "create", "update", "patch", "delete"]权限。

    你也可以设置部份权限和资源,如下

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: monitoring-endpoints
      labels:
        rbac.example.com/aggregate-to-monitoring: "true"
    # 当你创建 "monitoring-endpoints" ClusterRole 时,
    # 下面的规则会被添加到 "monitoring" ClusterRole 中
    rules:
    - apiGroups: [""]
      resources: ["services", "endpoints", "pods"]
      verbs: ["get", "list", "watch"]
    

    通过kubectl api-resources命令可以查看kubernetes当前版本apiGroups和resources。

    NAME                              SHORTNAMES       APIGROUP                       NAMESPACED   KIND
    bindings                                                                          true         Binding
    componentstatuses                 cs                                              false        ComponentStatus
    configmaps                        cm                                              true         ConfigMap
    endpoints                         ep                                              true         Endpoints
    events                            ev                                              true         Event
    limitranges                       limits                                          true         LimitRange
    namespaces                        ns                                              false        Namespace
    nodes                             no                                              false        Node
    persistentvolumeclaims            pvc                                             true         PersistentVolumeClaim
    persistentvolumes                 pv                                              false        PersistentVolume
    pods                              po                                              true         Pod
    podtemplates                                                                      true         PodTemplate
    replicationcontrollers            rc                                              true         ReplicationController
    resourcequotas                    quota                                           true         ResourceQuota
    secrets                                                                           true         Secret
    serviceaccounts                   sa                                              true         ServiceAccount
    services                          svc                                             true         Service
    mutatingwebhookconfigurations                      admissionregistration.k8s.io   false        MutatingWebhookConfiguration
    validatingwebhookconfigurations                    admissionregistration.k8s.io   false        ValidatingWebhookConfiguration
    customresourcedefinitions         crd,crds         apiextensions.k8s.io           false        CustomResourceDefinition
    apiservices                                        apiregistration.k8s.io         false        APIService
    applications                                       app.k8s.io                     true         Application
    controllerrevisions                                apps                           true         ControllerRevision
    daemonsets                        ds               apps                           true         DaemonSet
    deployments                       deploy           apps                           true         Deployment
    replicasets                       rs               apps                           true         ReplicaSet
    statefulsets                      sts              apps                           true         StatefulSet
    workflows                         wf               argoproj.io                    true         Workflow
    tokenreviews                                       authentication.k8s.io          false        TokenReview
    localsubjectaccessreviews                          authorization.k8s.io           true         LocalSubjectAccessReview
    selfsubjectaccessreviews                           authorization.k8s.io           false        SelfSubjectAccessReview
    selfsubjectrulesreviews                            authorization.k8s.io           false        SelfSubjectRulesReview
    subjectaccessreviews                               authorization.k8s.io           false        SubjectAccessReview
    horizontalpodautoscalers          hpa              autoscaling                    true         HorizontalPodAutoscaler
    cronjobs                          cj               batch                          true         CronJob
    jobs                                               batch                          true         Job
    certificatesigningrequests        csr              certificates.k8s.io            false        CertificateSigningRequest
    leases                                             coordination.k8s.io            true         Lease
    events                            ev               events.k8s.io                  true         Event
    daemonsets                        ds               extensions                     true         DaemonSet
    deployments                       deploy           extensions                     true         Deployment
    ingresses                         ing              extensions                     true         Ingress
    networkpolicies                   netpol           extensions                     true         NetworkPolicy
    podsecuritypolicies               psp              extensions                     false        PodSecurityPolicy
    replicasets                       rs               extensions                     true         ReplicaSet
    pytorchjobs                                        kubeflow.org                   true         PyTorchJob
    scheduledworkflows                swf              kubeflow.org                   true         ScheduledWorkflow
    studyjobs                                          kubeflow.org                   true         StudyJob
    tfjobs                                             kubeflow.org                   true         TFJob
    compositecontrollers              cc,cctl          metacontroller.k8s.io          false        CompositeController
    controllerrevisions                                metacontroller.k8s.io          true         ControllerRevision
    decoratorcontrollers              dec,decorators   metacontroller.k8s.io          false        DecoratorController
    alertmanagers                                      monitoring.coreos.com          true         Alertmanager
    prometheuses                                       monitoring.coreos.com          true         Prometheus
    prometheusrules                                    monitoring.coreos.com          true         PrometheusRule
    servicemonitors                                    monitoring.coreos.com          true         ServiceMonitor
    networkpolicies                   netpol           networking.k8s.io              true         NetworkPolicy
    poddisruptionbudgets              pdb              policy                         true         PodDisruptionBudget
    podsecuritypolicies               psp              policy                         false        PodSecurityPolicy
    clusterrolebindings                                rbac.authorization.k8s.io      false        ClusterRoleBinding
    clusterroles                                       rbac.authorization.k8s.io      false        ClusterRole
    rolebindings                                       rbac.authorization.k8s.io      true         RoleBinding
    roles                                              rbac.authorization.k8s.io      true         Role
    priorityclasses                   pc               scheduling.k8s.io              false        PriorityClass
    storageclasses                    sc               storage.k8s.io                 false        StorageClass
    volumeattachments                                  storage.k8s.io                 false        VolumeAttachment
    

    将ServicesAccount与ClusterRole绑定

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      annotations:
        rbac.authorization.kubernetes.io/autoupdate: "true"
      labels:
        kubernetes.io/bootstrapping: rbac-defaults
      name: cluster-role-all-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-role-all
    subjects:
    - kind: ServiceAccount
      name: sa-all
      namespace: test-namespace
    

    使用方式

    在你使用的test-namespace命名空间中的所有的工作负载当中都可以使用ServiceAccount。

    在Pod当中使用

    如果当前工作负载未绑定ServiceAccount,则会自动绑定defaultServiceAccount。

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
      namespace: test-namespace
    spec:
      serviceAccountName: sa-all
      automountServiceAccountToken: false
      ...
    

    另外一种方式,还可以通过文件卷挂载的方式使用

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
      namespace: test-namespace
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - mountPath: /var/run/secrets/tokens
          name: vault-token
      serviceAccountName: sa-all
      volumes:
      - name: vault-token
        projected:
          sources:
          - serviceAccountToken:
              path: vault-token
              expirationSeconds: 7200 # 过期时间
              audience: vault
    

    kubernetes会替 Pod 请求令牌并将其保存起来,通过将令牌存储到一个可配置的 路径使之在 Pod 内可用,并在令牌快要到期的时候刷新它。 kubelet 会在令牌存在期达到其 TTL 的 80% 的时候或者令牌生命期超过 24 小时 的时候主动轮换它。

    参考文献

    https://www.orchome.com/1315

    https://www.orchome.com/1308

    10月前
  • 关注了 {{10420 | filter2}} · 10月前