Merge remote-tracking branch 'upstream/master' into merged-master-dev-1.16
This commit is contained in:
@@ -3,7 +3,7 @@ reviewers:
|
||||
- dchen1107
|
||||
- roberthbailey
|
||||
- liggitt
|
||||
title: Master-Node communication
|
||||
title: Master-Node Communication
|
||||
content_template: templates/concept
|
||||
weight: 20
|
||||
---
|
||||
|
||||
@@ -176,7 +176,7 @@ checks the state of each node every `--node-monitor-period` seconds.
|
||||
In versions of Kubernetes prior to 1.13, NodeStatus is the heartbeat from the
|
||||
node. Starting from Kubernetes 1.13, node lease feature is introduced as an
|
||||
alpha feature (feature gate `NodeLease`,
|
||||
[KEP-0009](https://github.com/kubernetes/community/blob/master/keps/sig-node/0009-node-heartbeat.md)).
|
||||
[KEP-0009](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/0009-node-heartbeat.md)).
|
||||
When node lease feature is enabled, each node has an associated `Lease` object in
|
||||
`kube-node-lease` namespace that is renewed by the node periodically, and both
|
||||
NodeStatus and node lease are treated as heartbeats from the node. Node leases
|
||||
|
||||
@@ -75,9 +75,9 @@ consult your documentation for security best practices.
|
||||
Area of Concern for Kubernetes Infrastructure | Recommendation |
|
||||
--------------------------------------------- | ------------ |
|
||||
Network access to API Server (Masters) | Ideally all access to the Kubernetes Masters is not allowed publicly on the internet and is controlled by network access control lists restricted to the set of IP addresses needed to administer the cluster.|
|
||||
Network access to Nodes (Worker Servers) | Nodes should be configured to _only_ accept connections (via network access control lists) from the masters on the specified ports, and accept connections for services in Kubernetes of type NodePort and LoadBalancer. If possible, this nodes should not exposed on the public internet entirely.
|
||||
Network access to Nodes (Worker Servers) | Nodes should be configured to _only_ accept connections (via network access control lists) from the masters on the specified ports, and accept connections for services in Kubernetes of type NodePort and LoadBalancer. If possible, these nodes should not be exposed on the public internet entirely.
|
||||
Kubernetes access to Cloud Provider API | Each cloud provider will need to grant a different set of permissions to the Kubernetes Masters and Nodes, so this recommendation will be more generic. It is best to provide the cluster with cloud provider access that follows the [principle of least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege) for the resources it needs to administer. An example for Kops in AWS can be found here: https://github.com/kubernetes/kops/blob/master/docs/iam_roles.md#iam-roles
|
||||
Access to etcd | Access to etcd (the datastore of Kubernetes) should be limited to the masters only. Depending on your configuration you should also attempt to use etcd over TLS. More info can be found here: https://github.com/etcd-io/etcd/tree/master/Documentation#security
|
||||
Access to etcd | Access to etcd (the datastore of Kubernetes) should be limited to the masters only. Depending on your configuration, you should also attempt to use etcd over TLS. More info can be found here: https://github.com/etcd-io/etcd/tree/master/Documentation#security
|
||||
etcd Encryption | Wherever possible it's a good practice to encrypt all drives at rest, but since etcd holds the state of the entire cluster (including Secrets) its disk should especially be encrypted at rest.
|
||||
|
||||
## Cluster
|
||||
|
||||
@@ -15,7 +15,7 @@ weight: 40
|
||||
|
||||
## Terminology
|
||||
|
||||
For the sake of clarity, this guide defines the following terms:
|
||||
For clarity, this guide defines the following terms:
|
||||
|
||||
Node
|
||||
: A worker machine in Kubernetes, part of a cluster.
|
||||
|
||||
@@ -356,7 +356,7 @@ that are configured for a specific IP address and difficult to re-configure.
|
||||
The IP address that you choose must be a valid IPv4 or IPv6 address from within the
|
||||
`service-cluster-ip-range` CIDR range that is configured for the API server.
|
||||
If you try to create a Service with an invalid clusterIP address value, the API
|
||||
server will returns a 422 HTTP status code to indicate that there's a problem.
|
||||
server will return a 422 HTTP status code to indicate that there's a problem.
|
||||
|
||||
## Discovering services
|
||||
|
||||
@@ -598,7 +598,7 @@ For more information, see the [docs](https://cloud.google.com/kubernetes-engine/
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
|
||||
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
|
||||
[...]
|
||||
```
|
||||
{{% /tab %}}
|
||||
@@ -685,7 +685,7 @@ In the above example, if the Service contained three ports, `80`, `443`, and
|
||||
`8443`, then `443` and `8443` would use the SSL certificate, but `80` would just
|
||||
be proxied HTTP.
|
||||
|
||||
From Kubernetes v1.9 onwrds you can use [predefined AWS SSL policies](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html) with HTTPS or SSL listeners for your Services.
|
||||
From Kubernetes v1.9 onwards you can use [predefined AWS SSL policies](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html) with HTTPS or SSL listeners for your Services.
|
||||
To see which policies are available for use, you can use the `aws` command line tool:
|
||||
|
||||
```bash
|
||||
|
||||
@@ -522,11 +522,12 @@ parameters:
|
||||
Default is "default".
|
||||
* `adminSecretName`: secret that holds information about the Quobyte user and
|
||||
the password to authenticate against the API server. The provided secret
|
||||
must have type "kubernetes.io/quobyte", e.g. created in this way:
|
||||
must have type "kubernetes.io/quobyte" and the keys `user` and `password`,
|
||||
e.g. created in this way:
|
||||
|
||||
```shell
|
||||
kubectl create secret generic quobyte-admin-secret \
|
||||
--type="kubernetes.io/quobyte" --from-literal=key='opensesame' \
|
||||
--type="kubernetes.io/quobyte" --from-literal=user='admin' --from-literal=password='opensesame' \
|
||||
--namespace=kube-system
|
||||
```
|
||||
|
||||
@@ -610,13 +611,25 @@ parameters:
|
||||
group are searched to find one that matches `skuName` and `location`. If a
|
||||
storage account is provided, it must reside in the same resource group as the
|
||||
cluster, and `skuName` and `location` are ignored.
|
||||
* `secretNamespace`: the namespace of the secret that contains the Azure Storage
|
||||
Account Name and Key. Default is the same as the Pod.
|
||||
* `secretName`: the name of the secret that contains the Azure Storage Account Name and
|
||||
Key. Default is `azure-storage-account-<accountName>-secret`
|
||||
* `readOnly`: a flag indicating whether the storage will be mounted as read only.
|
||||
Defaults to false which means a read/write mount. This setting will impact the
|
||||
`ReadOnly` setting in VolumeMounts as well.
|
||||
|
||||
During provision, a secret is created for mounting credentials. If the cluster
|
||||
has enabled both [RBAC](/docs/reference/access-authn-authz/rbac/) and
|
||||
During storage provisioning, a secret named by `secretName` is created for the
|
||||
mounting credentials. If the cluster has enabled both
|
||||
[RBAC](/docs/reference/access-authn-authz/rbac/) and
|
||||
[Controller Roles](/docs/reference/access-authn-authz/rbac/#controller-roles),
|
||||
add the `create` permission of resource `secret` for clusterrole
|
||||
`system:controller:persistent-volume-binder`.
|
||||
|
||||
In a multi-tenancy context, it is strongly recommended to set the value for
|
||||
`secretNamespace` explicitly, otherwise the storage account credentials may
|
||||
be read by other users.
|
||||
|
||||
### Portworx Volume
|
||||
|
||||
```yaml
|
||||
|
||||
Reference in New Issue
Block a user