Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/activator-ds.yaml
104 changes: 104 additions & 0 deletions config/core/activator-ds.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# Copyright 2020 The Knative Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: activator
namespace: knative-serving
labels:
knative.dev/release: devel
spec:
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 50%
selector:
matchLabels:
app: activator
role: activator
template:
metadata:
labels:
app: activator
role: activator
knative.dev/release: devel
spec:
serviceAccountName: controller
containers:
- name: activator
# This is the Go import path for the binary that is containerized
# and substituted here.
image: knative.dev/serving/cmd/activator

resources:
requests:
cpu: 300m
memory: 60Mi
limits:
cpu: 500m
memory: 200Mi
env:
# Run Activator with GC collection when newly generated memory is 500%.
- name: GOGC
value: "500"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: SYSTEM_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CONFIG_LOGGING_NAME
value: config-logging
- name: CONFIG_OBSERVABILITY_NAME
value: config-observability
# TODO(https://github.com/knative/pkg/pull/953): Remove stackdriver specific config
- name: METRICS_DOMAIN
value: knative.dev/internal/serving

securityContext:
allowPrivilegeEscalation: false

ports:
- name: metrics
containerPort: 9090
- name: profiling
containerPort: 8008
- name: http1
containerPort: 8012
- name: h2c
containerPort: 8013

readinessProbe: &probe
httpGet:
port: 8012
httpHeaders:
- name: k-kubelet-probe
value: "activator"
livenessProbe: *probe
# The activator (often) sits on the dataplane, and may proxy long (e.g.
# streaming, websockets) requests. We give a long grace period for the
# activator to "lame duck" and drain outstanding requests before we
# forcibly terminate the pod (and outstanding connections). This value
# should be at least as large as the upper bound on the Revision's
# timeoutSeconds property to avoid servicing events disrupting
# connections.
terminationGracePeriodSeconds: 300

2 changes: 1 addition & 1 deletion config/core/deployments/activator-hpa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ metadata:
serving.knative.dev/release: devel
spec:
minReplicas: 1
maxReplicas: 20
maxReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
Expand Down
6 changes: 3 additions & 3 deletions config/core/deployments/activator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ spec:
# https://github.com/knative/serving/issues/1625#issuecomment-511930023
resources:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I run the instructions here: https://github.com/knative/serving/blob/master/DEVELOPMENT.md#deploy-knative-serving won't I get both the Deployment version and DaemonSet version?

Shouldn't you only run with one type?

On a similar note, how will this manifest in the v0.13.0 release instructions?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should not change anything there.
But we need to document probably that we can turn this off.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deployment wise nothing should change. Just execute the standard collective YAML.
But we need to document that you can pick or the other or both.

requests:
cpu: 300m
cpu: 100m
memory: 60Mi
limits:
cpu: 1000m
memory: 600Mi
cpu: 300m
memory: 200Mi

env:
# Run Activator with GC collection when newly generated memory is 500%.
Expand Down
2 changes: 1 addition & 1 deletion pkg/activator/net/revision_backends.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ func (rw *revisionWatcher) checkDests(dests sets.String) {
// precise load balancing in the throttler.
hs, noop, err := rw.probePodIPs(dests)
if err != nil {
rw.logger.Errorw("Failed probing", zap.Error(err))
rw.logger.With(zap.Error(err)).Warnf("Failed probing: %+v", dests)
// We dont want to return here as an error still affects health states.
}

Expand Down
4 changes: 0 additions & 4 deletions test/e2e-common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -366,10 +366,6 @@ metadata:
data:
profiling.enable: "true"
EOF

echo ">> Patching activator HPA"
# We set min replicas to 2 for testing multiple activator pods.
kubectl -n knative-serving patch hpa activator --patch '{"spec":{"minReplicas":2}}' || return 1
}

# Check if we should use --resolvabledomain. In case the ingress only has
Expand Down
3 changes: 2 additions & 1 deletion test/e2e/scale.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,11 @@ func ScaleToWithin(t *testing.T, scale int, duration time.Duration, latencies La
},
}),
v1alpha1testing.WithRevisionTimeoutSeconds(10))

if err != nil {
t.Errorf("CreateLatestService() = %v", err)
return fmt.Errorf("CreateLatestService() failed: %w", err)
}

// Record the time it took to create the service.
latencies.Add("time-to-create", start)
names.Route = serviceresourcenames.Route(svc)
Expand All @@ -135,6 +135,7 @@ func ScaleToWithin(t *testing.T, scale int, duration time.Duration, latencies La
url = s.Status.URL.URL()
return v1a1test.IsServiceReady(s)
}, "ServiceUpdatedWithURL")

if err != nil {
t.Errorf("WaitForServiceState(w/ Domain) = %v", err)
return fmt.Errorf("WaitForServiceState(w/ Domain) failed: %w", err)
Expand Down