副本集和部署都有属性replica: 3,部署和副本集有什么区别?部署是否通过底层的副本集进行?
部署配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
labels:
my-label: my-value
spec:
replicas: 3
selector:
matchLabels:
my-label: my-value
template:
metadata:
labels:
my-label: my-value
spec:
containers:
- name: app-container
image: my-image:latest
Run Code Online (Sandbox Code Playgroud)
副本集的配置
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
labels:
my-label: my-value
spec:
replicas: 3
selector:
matchLabels:
my-label: my-value
template:
metadata:
labels:
my-label: my-value
spec:
containers:
- name: app-container
image: my-image:latest
Run Code Online (Sandbox Code Playgroud)
何时使用 ReplicaSet
ReplicaSet 可确保在任何给定时间运行指定数量的 Pod 副本。然而,部署是一个更高级别的概念,它管理 ReplicaSet 并为 Pod 提供声明性更新以及许多其他有用的功能。因此,我们建议使用 Deployments 而不是直接使用 ReplicaSet,除非您需要自定义更新编排或根本不需要更新。
这实际上意味着您可能永远不需要操作 …
将 terraform 升级到 后3.64.2,尽管我没有更改任何代码,但terraform plan提醒我它将替换tag为tag_all. tags和 和有什么不一样tags_all?
~ resource "aws_lb_listener" "frontend_http_tcp" {
id = "xxxxx"
~ tags = {
- "environment" = "production" -> null
- "purpose" = "onboarding-integration" -> null
- "terraform" = "true" -> null
}
~ tags_all = {
- "environment" = "production"
- "purpose" = "onboarding-integration"
- "terraform" = "true"
} -> (known after apply)
# (4 unchanged attributes hidden)
# (1 unchanged block hidden) …Run Code Online (Sandbox Code Playgroud) 最近我们将我们的 web 服务器的 Linux 内核从 3.12.57-60.35 升级到了 3.12.62-60.62.1。
升级后,所有docker容器都无法正常启动。
每次我尝试启动我的容器时,runc:[2:INIT]都会创建一个全新的进程并挂在那里,这会占用 100% 的 CPU 负载。
同时,容器启动失败。
runc:[2:INIT] 是什么意思?
如何解决?
> docker -v
Docker version 17.04.0-ce, build 78d1802
> uname -r
3.12.74-60.64.96-default
> containerd -v
containerd version 0.2.3
> docker-runc -v
runc version spec: 1.0.0-rc2-dev
Run Code Online (Sandbox Code Playgroud)
docker info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 28
Server Version: 17.04.0-ce
Storage Driver: overlay
Backing Filesystem: xfs
Supports d_type: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local …Run Code Online (Sandbox Code Playgroud) 什么是VTIMEZONE用于icalendar?
例如1
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.12.3//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Asia/Shanghai
BEGIN:STANDARD
TZOFFSETFROM:+0900
RRULE:FREQ=YEARLY;UNTIL=19910914T150000Z;BYMONTH=9;BYDAY=3SU
DTSTART:19890917T000000
TZNAME:GMT+8
TZOFFSETTO:+0800
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0800
DTSTART:19910414T000000
TZNAME:GMT+8
TZOFFSETTO:+0900
RDATE:19910414T000000
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
TRANSP:OPAQUE
LAST-MODIFIED:20170305T083916Z
UID:gjo1burcjnsib4p2j8tbbv4hh0@google.com
DTSTAMP:20170305T083916Z
LOCATION:Cell Group
DESCRIPTION:
STATUS:CONFIRMED
SEQUENCE:0
SUMMARY:Study Bible
DTSTART;TZID=Asia/Shanghai:20170324T193000
DTEND;TZID=Asia/Shanghai:20170324T213000
X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
CREATED:20160312T140632Z
RRULE:FREQ=WEEKLY;BYDAY=FR
BEGIN:VALARM
X-WR-ALARMUID:9B47E27E-9063-417E-B488-409387A3201A
UID:9B47E27E-9063-417E-B488-409387A3201A
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
ACKNOWLEDGED:20161125T105826Z
X-APPLE-DEFAULT-ALARM:TRUE
ACTION:NONE
END:VALARM
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
VTIMEZONE:提供定义时区的组件属性分组.
是否可以描述某个地点的冬季时间和夏季时间?
我不必在icalendar对象中指定VTIMEZONE组件.相反,我将当地时间转换为utc时间,并导出icalendar事件.
# Before
DTSTART:20170324T113000Z
DTEND:20170324T130000
# After
DTSTART;TZID=Asia/Shanghai:20170324T193000
DTEND;TZID=Asia/Shanghai:20170324T213000
Run Code Online (Sandbox Code Playgroud)
2.1这有意义吗?没有VTIMEZONE的icalendar对象
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.12.3//EN
BEGIN:VEVENT
TRANSP:OPAQUE …Run Code Online (Sandbox Code Playgroud) 这里我有一个variables.tf定义输入变量。
# Input variable definitions
variable "project" {
description = "project name, e.g. paylocity, paychex, ultipro"
type = string
}
variable "environment" {
description = "the environment of project, e.g. production, sandbox, staging"
type = string
default = "sandbox"
}
Run Code Online (Sandbox Code Playgroud)
我脑海中的伪代码是这样的。
variable "project" {
description = "project name, e.g. paylocity, paychex, ultipro"
type = string
presence = required (or optional)
}
Run Code Online (Sandbox Code Playgroud) 一个Kubernetes集群包含多个组件,例如kubelet、etcd、api-server等。
我们在搭建集群的时候需要设置很多证书和密钥,然后它们之间就可以携带这些证书进行通信。
> kubectl describe pod kube-apiserver-controlplane -n=kube-system
Name: kube-apiserver-controlplane
Namespace: kube-system
...
Controlled By: Node/controlplane
Containers:
kube-apiserver:
Container ID: docker://6974d026de0b2fadb3d2628d0df971ddc4c3d772665b2cd960a1d0e385f97a5d
Image: k8s.gcr.io/kube-apiserver:v1.20.0
Image ID: docker-pullable://k8s.gcr.io/kube-apiserver@sha256:8b8125d7a6e4225b08f04f65ca947b27d0cc86380bf09fab890cc80408230114
Command:
kube-apiserver
...
--client-ca-file=/etc/kubernetes/pki/ca.crt
--etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
--etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
--etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
--kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
--kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
--tls-cert-file=/etc/kubernetes/pki/apiserver.crt
--tls-private-key-file=/etc/kubernetes/pki/apiserver.key
...
...
Run Code Online (Sandbox Code Playgroud)
我了解证书颁发机构(CA)、证书、mTLS 的概念以及 HTTPs 的机制。
我知道零信任模型。
但我不明白这些 Kubernetes 证书试图解决什么安全风险。
如果黑客可以获得我们节点的根访问权限,他们就可以查看包括证书在内的所有内容,这种复杂性似乎并没有给我们带来更多的安全性。
对于 Kubernetes 集群来说,哪些安全风险是最重要(常见)的?
如果我不使用证书来保护集群内的内部通信,黑客将如何攻击我?
据我所知,AWS负载均衡器和EC2之间的通信是HTTP而不是HTTPs,看起来没问题。为什么负载均衡器和 EC2 之间不需要证书,但 Kubernetes 集群内需要证书?
var Todo = Backbone.Model.extend({
initialize: function(){
this.on('change', function(){
console.log('- Values for this model have changed.');
});
}
})
Run Code Online (Sandbox Code Playgroud)
var TodoView = Backbone.View.extend({
className: "document-row",
events: {
"click .icon": "open",
"click .button.delete": "destroy"
}
})
Run Code Online (Sandbox Code Playgroud)
定义事件语法在模型/集合和视图之间是完全不同的,为什么它们以这种方式设计?
我认为最好定义这样的模型事件.但骨干不支持它.
var Todo = Backbone.Model.extend({
events: {
"change": "foo"
},
foo: function(){
console.log("test")
}
});
Run Code Online (Sandbox Code Playgroud) 这里我有一个 AWS 实例,它指定了两个安全组default\xe2\x91\xa0 和my first group\xe2\x91\xa1。
现在我想让这个实例 ssh 可用。以下两种方式都有效:
\n\nssh-availablessh-available。它们相同吗?
\n\n为实例指定安全组时,其 eni 是否在幕后指定了安全组?
\n\n\n这是一个AWS典型的VPC,它由以下组件组成
步骤1,子网1中的实例(私有IP 172.31.0.5)发送数据包到IP 172.31.16.5(子网2中)。
step2,数据包到达路由表,路由表将数据包重定向到目标local。
第三步,一些神奇的事情发生了。
步骤4、instance(172.31.16.5)接收数据包。
我有一个带有四个副本的主 RDS 实例。
主数据库:Postgres、4 个 vCPU、16GB RAM、us-west-2a
Replica1:Postgres、4 个 vCPU、16GB RAM、us-west-2a、200G SSD(无流量,仅用于测试)
Replica2:Postgres、4 个 vCPU、16GB RAM、us-west-2b、200G SSD(无流量,仅用于测试)
Replica3:Postgres、2 个 vCPU、8GB RAM、us-west-2b、200G SSD(流量不大)
Replica4:Postgres、2 个 vCPU、8GB RAM、us-west-2b、200G SSD(流量很少)
在没有任何高 IOPS 的情况下,主数据库和只读副本之间的延迟超过 16 秒,有时甚至达到 30 秒。
我花了很多精力来挖掘滞后的根本原因。
以下是没有任何流量的副本的 CloudWatch 报告。
这是 IO 信用报告,过去 6 小时始终为 100%,我不认为这是由 IO 问题引起的。
即使我不认为这是由 IO 引起的,我还是决定将数据库磁盘从 GP2 升级到 IO1,并配置 3000 IOPS。
但这不起作用,滞后仍然存在。
回复没有流量!它与 postgresql 参数无关max_standby_streaming_delay并且hot standby
流量始终低于1M/s
我创建了两个全新的 m5.large PostgreSQL 实例来验证这个假设,并使用 pgbench 进行基准测试。
主要:M5.large,配置 3000 IOPS。
副本:M5.xlarge,具有 1000 个预配置 IOPS。 …
kubernetes ×2
terraform ×2
amazon-ec2 ×1
amazon-rds ×1
amazon-vpc ×1
backbone.js ×1
calendar ×1
containers ×1
docker ×1
icalendar ×1
javascript ×1
postgresql ×1
rfc5545 ×1
routetable ×1
timezone ×1
topology ×1