我正在尝试使用命令从本地机器 CLI 在 minikube(Kubernetes) 上执行 spark-submit
spark-submit --master k8s://https://127.0.0.1:8001 --name cfe2
--deploy-mode cluster --class com.yyy.Test --conf spark.executor.instances=2 --conf spark.kubernetes.container.image docker.io/anantpukale/spark_app:1.1 local://spark-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)
我有一个基于 verison 2.3.0 的简单火花作业 jar。我还在 docker 和 minikube 中将它容器化并在虚拟机上运行。以下是异常堆栈:
Exception in thread "main" org.apache.spark.SparkException: Must specify the driver container image at org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep$$anonfun$3.apply(BasicDriverConfigurationStep.scala:51) at org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep$$anonfun$3.apply(BasicDriverConfigurationStep.scala:51) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.deploy.k8s.submit.steps.BasicDriverConfigurationStep.<init>(BasicDriverConfigurationStep.scala:51)
at org.apache.spark.deploy.k8s.submit.DriverConfigOrchestrator.getAllConfigurationSteps(DriverConfigOrchestrator.scala:82)
at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:229)
at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication$$anonfun$run$5.apply(KubernetesClientApplication.scala:227)
at org.apache.spark.util.Utils$.tryWithResource(Utils.scala:2585)
at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.run(KubernetesClientApplication.scala:227)
at org.apache.spark.deploy.k8s.submit.KubernetesClientApplication.start(KubernetesClientApplication.scala:192)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:879)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:197)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 2018-04-06 13:33:52 INFO ShutdownHookManager:54 - Shutdown hook called 2018-04-06 …Run Code Online (Sandbox Code Playgroud) 我正在从头开始配置 Kubernetes 集群(原因)。它是虚拟机内部的本地设置,一切都很好,除了master节点被创建为可调度的。
我尝试master通过将必需的参数传递给 kubelet 二进制文件来为节点分配标签和适当的污点(不能解决问题):
--register-with-taints=node-role.kubernetes.io/master=:NoSchedule
--node-labels=master,node-role.kubernetes.io/master=""
Run Code Online (Sandbox Code Playgroud)
这是来自的输出kubectl describe <node>:
Name: myNodeName
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/hostname=myHostName
master=
node-role.kubernetes.io/master=
Annotations: node.alpha.kubernetes.io/ttl=0
volumes.kubernetes.io/controller-managed-attach-detach=true
CreationTimestamp: Tue, 03 Jul 2018 05:56:53 +0000
Taints: node-role.kubernetes.io/master=true:NoSchedule
Unschedulable: false
Run Code Online (Sandbox Code Playgroud)
如何将此节点设置为不可调度?文档并没有真正指定这一点(请随意指向文档的适当部分,以防我遗漏了某些内容)。
PS:上面提到的标签/污点在创建/注册节点之前就存在。
目前正在使用pyTelegramBotAPI编写我的第一个机器人。我想禁用某些消息的链接预览。我该怎么做呢?
我有一个已设置并连接到我的后端的电报机器人。当用户选择“输入密码”选项时,我会在请求旁边发送一个内嵌键盘,以便用户可以输入他的数字密码。我这样做是为了不会在聊天中显示密码。我遇到的问题是我使用 callback_data 为按下的按钮分配一个值,但是当按下按钮时,这些回调会一一发生。我想知道是否可以建立一个累积的按下字符字符串,一旦按下“提交”按钮,就可以通过用户的响应发送。
我的内联请求目前如下所示:
{
"chat_id": 99999999,
"text": "Enter Password",
"reply_markup": {
"inline_keyboard": [
[{"text": "1","callback_data":"1","pay":true},{"text": "2","callback_data":"2"},{"text": "3","callback_data":"3"}],
[{"text": "4","callback_data":"4"},{"text": "5","callback_data":"5"},{"text": "6","callback_data":"6"}],
[{"text": "7","callback_data":"7"},{"text": "8","callback_data":"8"},{"text": "9","callback_data":"9"}],
[{"text": "0","callback_data":"0"}],
[{"text": "Submit","callback_data":"Submit"}]
]
}
}
Run Code Online (Sandbox Code Playgroud)
此外,还可以在按下提交后使内联按钮消失,我已经浏览了电报机器人文档,并且可以找到任何这样的选项。 https://core.telegram.org/bots/api#sendmessage
请告知这是否可行,或者我是否应该采取另一种方法。
我最近使用 pyTelegramBotAPI (telebot) 创建了一个简单的电报机器人。我添加了一个消息处理程序,该处理程序应该处理每条消息,包括新用户加入时出现在组上的消息,它们仍然Message是非空属性的对象new_chat_members。
import telebot
bot = telebot.TeleBot(TOKEN)
[...]
@bot.message_handler(func=lambda m: True)
def foo(message):
bot.send_message(message.chat.id,"I got the message")
bot.polling()
Run Code Online (Sandbox Code Playgroud)
即便如此,当我添加新用户时,机器人不会回复“我收到消息”字符串,尽管它确实捕获了其他消息。
为什么会发生这种情况?这是消息处理程序的问题吗?是否有一个更通用的处理程序可以确保捕获每个更新?
谢谢
我刚开始学习 React Hooks。我有一个名为 appContext.js 的文件,里面有 AppContext
const AppContext = React.createContext(initialState);
Run Code Online (Sandbox Code Playgroud)
我想在文件 checkInfo.js 中使用它
const CheckInfo = (props) => {
const [state, dispatch] = useContext(AppContext);
useEffect(() => {
var personData = {};
async function fetchData() {
dispatch({
type: "isLoding",
payload: true,
});
}
////other code
}
Run Code Online (Sandbox Code Playgroud)
但我有
TypeError: Object is not a function
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
我正在给机器人写电报。我遇到了这样的问题。我需要机器人在单击它被复制时发送消息(文本)(作为来自@BotFather 的令牌)
我打算使用 kubernetes java 客户端(https://github.com/kubernetes-client/java/)编写简单的程序。我可以获得所有命名空间和 Pod,但是如何获取给定命名空间中的部署列表?我找不到任何方法。有什么办法可以得到吗?
for (V1Namespace ns: namespaces.getItems()) {
System.out.println("------Begin-----");
System.out.println("Namespace: " + ns.getMetadata().getName());
V1PodList pods = api.listNamespacedPod(ns.getMetadata().getName(), null, null, null, null, null, null, null, null, null);
int count = 0;
for (V1Pod pod: pods.getItems()) {
System.out.println("Pod " + (++count) + ": " + pod.getMetadata().getName());
System.out.println("Node: " + pod.getSpec().getNodeName());
}
System.out.println("------ENd-----");
}
Run Code Online (Sandbox Code Playgroud) 我仔细阅读了 Kubernetes 文档,了解扩展默认的 15%imagefs.available和其他参数,但它没有说明如何设置它,我已经使用以下配置安装了 RKE(Rancher Kubernetes Engine)。
Kubernets Version:v1.17.5
OS: Ubuntu 18.04.4 LTS
Container Runtime: 19.3.9
Run Code Online (Sandbox Code Playgroud)
顺便说一句,文档没有清楚地解释如何扩展默认驱逐,所以我来这里是为了知道是否有人可以告诉我如何扩展它。
我也尝试过 kubelet 命令行,但我明白了
I0903 09:59:13.143727 31472 plugins.go:100] No cloud provider specified.
W0903 09:59:13.143760 31472 server.go:560] standalone mode, no API client
W0903 09:59:13.148508 31472 container_manager_linux.go:912] CPUAccounting not enabled for pid: 31472
W0903 09:59:13.148527 31472 container_manager_linux.go:915] MemoryAccounting not enabled for pid: 31472
W0903 09:59:13.579594 31472 server.go:474] No api server defined - no events will be sent to API server.
I0903 09:59:13.579620 …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个带有 telethon for telegram 的访问机器人。
一切都工作得很好,但是:
如果新加入的用户没有先写“/start”,则用户不会从机器人收到消息。
该人是否有可能收到该消息?
我读过在某个地方不可能做到这一点,但是外面有机器人怎么办?
telegram ×5
telegram-bot ×5
kubernetes ×4
python ×4
apache-spark ×1
bots ×1
docker ×1
javascript ×1
kubectl ×1
minikube ×1
python-3.x ×1
react-hooks ×1
reactjs ×1
telethon ×1