我尝试在我的 kubernetes 集群中实施网络策略,以将我的 Pod 隔离在命名空间中,但仍然允许它们访问互联网,因为我使用 Azure MFA 进行身份验证。
这是我尝试过的,但似乎无法让它发挥作用。入口按预期工作,但这些策略阻止所有出口。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
Run Code Online (Sandbox Code Playgroud)
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: grafana-policy
namespace: default
spec:
podSelector:
matchLabels:
app: grafana
ingress:
- from:
- podSelector:
matchLabels:
app: nginx-ingress
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何使上述配置工作,以便我也允许互联网流量但阻止其他 POD 的流量?
基于此(https://kubernetes.io/docs/getting-started-guides/kubeadm/)步骤,我在 Centos 7 box 中安装了 Kubernetes 并运行 kubeadm init 命令。
但节点未处于就绪状态。当我查看 /var/log/messages.log 时。收到以下消息。
Apr 30 22:19:38 master kubelet: W0430 22:19:38.226441 2372 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Apr 30 22:19:38 master kubelet: E0430 22:19:38.226587 2372 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Run Code Online (Sandbox Code Playgroud)
我的 kubelet 使用这些参数运行。
/usr/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt --cgroup-driver=systemd
Run Code Online (Sandbox Code Playgroud)
在我的服务器中我没有看到 /etc/cni/net.d 目录。在 /opt/cin/bin 目录中,我看到了这些文件。 …
我是网络抓取的新手,我正在尝试使用以下几行修改我的用户代理:
from selenium import webdriver
chrome_path = r'C:\Users\Desktop\chromedriver_win32\chromedriver.exe'
driver = webdriver.Chrome(chrome_path)
options = webdriver.ChromeOptions()
options.add_argument('user-agent = Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')
driver = webdriver.Chrome(chrome_options=options)
Run Code Online (Sandbox Code Playgroud)
环境变量中的路径没问题,但我一直收到此错误消息:
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in startstdin=PIPE)
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py",line 709, in __init__restore_signals, start_new_session)
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py",line 997, in _execute_child startupinfo).
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\safia\AppData\Local\Programs\Python\Python36-32\Test 3- User Agent.py", line 9, in <module>
driver = webdriver.Chrome(chrome_options=options)
File "C:\Users\safia\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 68, in __init__ …Run Code Online (Sandbox Code Playgroud) python selenium google-chrome selenium-chromedriver selenium-webdriver
我设置了一个 Kubernetes 集群,其中包含 1 个主节点 (kube-master) 和 2 个从节点(kube-node-01 和 kube-node-02)
一切都运行良好......现在在 debianstretch->buster 升级之后,我的 coredns podCrashLoopBackOff由于某种原因失败了。
我做了一个kubectl describe,错误是Readiness probe failed: HTTP probe failed with statuscode: 503
Readiness url 对我来说看起来很可疑http-get http://:8080/health delay=0s timeout=1s period=10s #success=1 #failure=3......没有主机名!?那是对的吗?
该Liveness属性也没有主机名。
所有虚拟机均可相互 ping 通。
有任何想法吗?
我有以下的谷歌Kubernetes发动机水平波德Autoscaller配置比例由度量的自定义部署-RabbitMQ messages ready count特定队列:foo-queue。
它正确地获取了度量值。
插入 2 条消息时,它将部署扩展到最多 10 个副本。我希望它可以扩展到 2 个副本,因为 targetValue 是 1 并且准备好了 2 条消息。
为什么它会如此积极地扩展?
HPA 配置:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: foo-hpa
namespace: development
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: foo
minReplicas: 1
maxReplicas: 10
metrics:
- type: External
external:
metricName: "custom.googleapis.com|rabbitmq_queue_messages_ready"
metricSelector:
matchLabels:
metric.labels.queue: foo-queue
targetValue: 1
Run Code Online (Sandbox Code Playgroud) 我尝试使用 onChange 处理程序将asYouType函数添加libphonenumber-js到我的 svelte 输入中,因为我不确定如何通过 2 路绑定来完成此操作。
我已经设法实现了这一点,但它只会在 onBlur 上格式化数字,而不是在用户键入输入时按照预期的行为,如此处libphonenumber-js所示
如何更改我的输入,使其在用户输入时格式化?
<script>
import { AsYouType } from "libphonenumber-js";
export let value = "";
export let label = "";
let isFocused = false;
let isTooltipVisible = false;
const onBlur = () => {
isFocused = false;
isTooltipVisible = false;
};
const handleChange = val => {
if (localeKey === "dfc.removal_form.phone") {
const asYouType = new AsYouType("US");
value = new AsYouType("US").input(val);
}
};
</script>
<div class="input-container input__row …Run Code Online (Sandbox Code Playgroud) 我创建了一个无头服务:
apiVersion: v1
kind: Service
metadata:
name: myapp-service-headless
spec:
ports:
- port: 80
selector:
app: myapp
clusterIP: None
Run Code Online (Sandbox Code Playgroud)
从 Kubernetes 仪表板我可以看到它Internal endpoints:
myapp-service-headless:80 TCP
myapp-service-headless:0 TCP
Run Code Online (Sandbox Code Playgroud)
在此应用程序中,我还将内部端点设置为:
http://myapp-service-headless
Run Code Online (Sandbox Code Playgroud)
但是从外部如何访问其IP来连接API呢?
比如我的Kubernetes的IP是192.168.99.100,那么连接192.168.99.100可以吗?
到目前为止我发现了什么:
*)旁注:虽然我们的容器入口点是[“/opt/tomcat/bin/catalina.sh”,“run”],但在catalina.sh中,java进程是通过bash buildin“exec”命令启动的,因此java进程取代了shell进程,因此成为新的进程id 1。(我可以通过exec进入正在运行的容器并在其中执行“ps aux”来验证这一点。)顺便说一句,我使用的是tomcat 7.0.88。
我发现有关 tomcat 默认情况下正常关闭的声明(http://tomcat.10.x6.nabble.com/Graceful-Shutdown-td5020523.html - “任何正在进行的连接都将完成”),但我所能看到的是从 docker 发送到 java 进程的 SIGTERM 几乎不会停止正在执行的请求。
我编写了一个小 servlet 来测试此行为:
import javax.ws.rs.*;
import javax.ws.rs.core.*;
import javax.ws.rs.core.Response.Status;
@Path("/")
public class SlowServerRes
{
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("test1")
public Response test1(@QueryParam("sleep") final int sleepDurationSec)
{
long received = System.currentTimeMillis();
System.out.println("+++++++++++++++++++++ received request at " + received);
for (int i=1; i <= sleepDurationSec; i++) { …Run Code Online (Sandbox Code Playgroud) 我对 Kubernetes 非常陌生。我从最近离开团队的另一位开发人员那里继承了一个副项目——实际上是一个正在进行的 POC。他在虚拟机上做了一个演示,在他突然离开之前我们仍然可以访问该演示。他离开后,我们可以查看他的演示,一切正常。一名团队成员重新启动了虚拟机,现在一切都坏了。我被指派去解决问题。除了 Kubernetes 部分之外,我已经能够恢复所有组件,所有堆栈跟踪都表明目前存在问题。
如前所述,我是 Kubernetes 的新手,因此我缺乏在网上进行正确搜索的词汇。
我运行了一些命令,并将其输出粘贴在下面。如果我理解正确的话,问题在于 k8s 部署未运行:kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IPPORT(S) AGE AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 14d
service/app-service-5x7z NodePort 10.96.215.11 <none> 3000:32155/TCP,3001:32762/TCP,27017:30770/TCP 3d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/app-deployment-5x7z 0/1 1 0 3d
NAME DESIRED CURRENT READY AGE
replicaset.apps/app-deployment-5x7z 1 1 0 3d
Run Code Online (Sandbox Code Playgroud)
我猜测问题在于 READY 状态为0/1
有人可以指导我如何让这个人回来吗?另外,我在网上看到很多厚重的文档,有没有一个浅库的地方可以让我深入研究 Kubernetes 的工作。我对这个机会感到非常兴奋,但它并不是一个顺利的开始。
以下是具有重复属性的深度嵌套对象。
如何转换以下深度嵌套的对象
const obj = {
prop1: {
properties: { value: {} },
},
prop2: {
properties: { subProp: { properties: { value: {} } } },
},
prop3: {
properties: { subProp: { properties: { subSubProp: { properties: { value: {} } } } } },
},
};
Run Code Online (Sandbox Code Playgroud)
进入这个:
const obj = {
prop1: { value: {} },
prop2: { subProp: { value: {} } },
prop3: { subProp: { subSubProp: { value: {} } } },
};
//if …Run Code Online (Sandbox Code Playgroud)