我正在学习k8s。我的问题是如何让k8s像minikube命令“minikube get service xxx --url”那样获取服务url呢?为什么我问是因为当 pod 关闭并再次启动/创建/启动时,不需要通过访问服务 url 来更改 url。当我将 pod 部署为 NodePort 时,我可以使用主机 IP 和端口访问 pod,但是如果重新启动/再次创建它,端口会发生变化。
我的情况如下图所示:我有
one master(172.16.100.91) and
one node(hostname node3, 172.16.100.96)
Run Code Online (Sandbox Code Playgroud)
我创建如下 pod 和服务,hellocomm 部署为 NodePort,helloext 部署为 ClusterIP。hellocomm 和 helloext 都是 spring boot hello world 应用程序。
docker build -t jshenmaster2/hellocomm:0.0.2 .
kubectl run hellocomm --image=jshenmaster2/hellocomm:0.0.2 --port=8080
kubectl expose deployment hellocomm --type NodePort
docker build -t jshenmaster2/helloext:0.0.1 .
kubectl run helloext --image=jshenmaster2/helloext:0.0.1 --port=8080
kubectl expose deployment helloext --type ClusterIP
[root@master2 shell]# kubectl get service -o wide
NAME …Run Code Online (Sandbox Code Playgroud) 我在我的 win10 机器的两个虚拟机(centos 7.4)中安装了 kube1.10.3。我使用 git clone 来获取 prometheus yaml 文件。
git clone https://github.com/kubernetes/kubernetes
Run Code Online (Sandbox Code Playgroud)
然后我输入 kubernetes/cluster/addons/prometheus 并按照以下顺序创建 pod:
alertmanager-configmap.yaml
alertmanager-pvc.yaml
alertmanager-deployment.yaml
alertmanager-service.yaml
kube-state-metrics-rbac.yaml
kube-state-metrics-deployment.yaml
kube-state-metrics-service.yaml
node-exporter-ds.yml
node-exporter-service.yaml
prometheus-configmap.yaml
prometheus-rbac.yaml
prometheus-statefulset.yaml
prometheus-service.yaml
Run Code Online (Sandbox Code Playgroud)
但是 Prometheus 和 alertmanage 处于待处理状态:
kube-system alertmanager-6bd9584b85-j4h5m 0/2 Pending 0 9m
kube-system calico-etcd-pnwtr 1/1 Running 0 16m
kube-system calico-kube-controllers-5d74847676-mjq4j 1/1 Running 0 16m
kube-system calico-node-59xfk 2/2 Running 1 16m
kube-system calico-node-rqsh5 2/2 Running 1 16m
kube-system coredns-7997f8864c-ckhsq 1/1 Running 0 16m
kube-system coredns-7997f8864c-jjtvq 1/1 Running 0 16m
kube-system etcd-master16g …Run Code Online (Sandbox Code Playgroud) 我正在研究 MLFlow,它使用 conda 来帮助设置环境和依赖项。在下面的 conda.yaml 文件 /1/ 中,我有三个问题:
渠道是什么意思?为什么需要蟒蛇?什么是默认频道?
在依赖部分,有pip,pip是包管理工具。如果有dependencies 关键字,为什么又需要pip?pip 是否安装依赖项的依赖项。
name:flower_classifier,是否表示环境名称是flower-classifier?
/1/
name: flower_classifier
channels:
- defaults
- anaconda
dependencies:
- python==3.6
- numpy==1.14.2
- keras==2.2.4
- pandas
- pip:
- tensorflow-gpu==1.10.0
- mlflow
- click==6.7
- scikit-learn
- pillow
Run Code Online (Sandbox Code Playgroud) 嗨:我有一个多线程Java程序.有很多单身人士.我想知道单例是否会降低多线程程序的性能,尤其是吞吐量.一些Singleton只是一个对象,一些singleton是concurrentHashmap和/或atomicinteger.
我有下面的代码:这是为了获得信号量的知识.代码是线程A首先等待自b.wait()(使调用线程休眠),然后得到通知,为什么代码在这里同步?如果不是,则会出现IllegalMontiorXXXXXXXXX异常.
public class ThreadA {
public static void main(String[] args){
ThreadB b = new ThreadB();
b.start();
synchronized(b){
try{
System.out.println("Waiting for b to complete...");
b.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("Total is: " + b.total);
}
}
}
class ThreadB extends Thread{
int total;
@Override
public void run(){
synchronized(this){
for(int i=0; i<100 ; i++){
total += i;
}
notify();
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:答案是同步让当前线程拥有信号量.notify()文档解释了这一点.
您好:我有一个多线程 Java 应用程序。有很多临时对象。
-XX:MaxTenuringThreshold=1, 我们在启动 JVM 时放置了上面的参数。这意味着所有对象都将在 gc 期间存活一次,然后将其提升到老年代。我们-XX:MaxTenuringThreshold=10可以举个例子,这样对象会在 10 次 gc 后提升到 old JVM old generation。但这是否会在年轻的 gc 期间导致不必要的复制操作(因为对象被复制“从 'eden' 到 'from'、从 'from' 到 'to'、'from'、'to' 是两个幸存者缓冲区)?
这些问题也可能意味着如果 a) 年轻代有多次复制,老年代 gc 少,b) 老年代垃圾收集时间长,但年轻代副本很少,哪个更好的性能更好?
java performance garbage-collection jvm permanent-generation
我有一个示例Hello World JavaFx.我正在使用Eclipse和eFxclipse插件.我的Eclipse是kepler,它是Eclipse 4.3.2版本,Java servion是Jdk1.7-045.
我尝试添加的是很少的并发代码,我只想更新示例中的按钮文本.这个后端任务是否可以与前期UI控件交互,例如按钮,场景?如果没有,我怎样才能制作定制的后端任务,然后与UI控件进行交互?
提前致谢
package com.juhani.fx.exer;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javafx.application.Application;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application{
private static final short COREPOOLSIZE=2;
private static final short MAXIMUMPOOLSIZE=2;
private static final int WORKQUEUECAPACITY=100;
private static Logger log = LogManager.getLogger(
HelloWorld.class.getName());
private ExecutorService executors = new ThreadPoolExecutor(COREPOOLSIZE,MAXIMUMPOOLSIZE,20,TimeUnit.MINUTES,new ArrayBlockingQueue<Runnable>(WORKQUEUECAPACITY));
public static void main(String[] args) {
LogMessage logMessage = …Run Code Online (Sandbox Code Playgroud) 我在 Linux Ubuntu 中部署了一个 nodejs->kafka>storm->Mongo。原本一切正常。然后我更改了 Storm worker 中的方法,这使得 Storm worker 处理消息非常慢,每条消息大约 1 分钟,我注意到消息从 Storm 中一次又一次地发送。我恢复到原来的方法,一切都很好。(原始方法处理时间为每条消息 90 毫秒)。
我猜这是 Storm 的可靠性发挥作用。当消息未被确认或超时时,它再次发送消息。
如果我的猜测是对的,如何配置此超时?
如果我的猜测是错误的,为什么同一条消息会发送两次或三次?
我正在使用 ELK(弹性搜索、kibana、logstash、filebeat)来收集日志。我有一个带有以下几行的日志文件,每一行都有一个 json,我的目标是使用 Logstash Grok 取出 json 中的键/值对并将其转发到弹性搜索。
2018-03-28 13:23:01 charge:{"oldbalance":5000,"managefee":0,"afterbalance":"5001","cardid":"123456789","txamt":1}
2018-03-28 13:23:01 manage:{"cuurentValue":5000,"payment":0,"newbalance":"5001","posid":"123456789","something":"new2","additionalFields":1}
Run Code Online (Sandbox Code Playgroud)
我正在使用Grok Debugger制作正则表达式模式并查看结果。我目前的正则表达式是:
%{TIMESTAMP_ISO8601} %{SPACE} %{WORD:$:data}:{%{QUOTEDSTRING:key1}:%{BASE10NUM:value1}[,}]%{QUOTEDSTRING:key2}:%{BASE10NUM:value2}[,}]%{QUOTEDSTRING:key3}:%{QUOTEDSTRING:value3}[,}]%{QUOTEDSTRING:key4}:%{QUOTEDSTRING:value4}[,}]%{QUOTEDSTRING:key5}:%{BASE10NUM:value5}[,}]
Run Code Online (Sandbox Code Playgroud)
正如人们所见,它是硬编码的,因为真实日志中 json 中的键可以是任何单词,值可以是整数、双精度或字符串,而且键的长度各不相同。所以我的解决方案是不可接受的。我的解决结果如下图,仅供参考。我正在使用Grok 模式。
我的问题是,尝试在 json 中提取键是否明智,因为弹性搜索也使用 json?其次,如果我尝试从 json 中取出键/值,是否有正确、简洁的 Grok 模式?
解析上述行中的第一行时,Grok 模式的当前结果给出以下输出。
{
"TIMESTAMP_ISO8601": [
[
"2018-03-28 13:23:01"
]
],
"YEAR": [
[
"2018"
]
],
"MONTHNUM": [
[
"03"
]
],
"MONTHDAY": [
[
"28"
]
],
"HOUR": [
[
"13",
null
]
],
"MINUTE": [
[
"23",
null
]
],
"SECOND": [
[ …Run Code Online (Sandbox Code Playgroud) 我有一个数组,比如说[4 4 4 4 4],这里的长度是5。在实际情况下可能是这样300。如何检查所有元素是否相同,例如在本例中全部都是4。如果所有元素具有相同的值,则函数返回true,否则返回false。元素只能是整数,值可以是其中之一:0,1,2,3,4。
我可以在 Python 中使用循环,如下所示。但我正在寻找一种简洁的方法或简单的方法来做到这一点,比如说一行。
x= [4,4,4,4]
temp = x[0]
for ele in x:
if(temp != ele):
false
true
Run Code Online (Sandbox Code Playgroud) java ×3
kubernetes ×2
performance ×2
apache-storm ×1
conda ×1
javafx ×1
javafx-2 ×1
jvm ×1
logstash ×1
prometheus ×1
python ×1
semaphore ×1