Update troubleshooting guide about namespaces

Updated to show how to use namespaces with Kubernetes
Also updates the timeouts for gateways newer than 0.7.7
This commit is contained in:
Alex Ellis
2018-03-26 09:21:59 +01:00
committed by GitHub
parent de2c74fcdb
commit 949810c403

View File

@ -1,15 +1,5 @@
# Troubleshooting guide # Troubleshooting guide
## CLI unresponsive - localhost vs 127.0.0.1
On certain Linux distributions the name `localhost` maps to an IPv6 alias meaning that the CLI may hang. In these circumstances you have two options:
1. Use the `-g` or `--gateway` argument with `127.0.0.1`
This forces IPv4.
2. Edit the `/etc/hosts` file on your machine and remove the IPv6 alias for localhost.
## Timeouts ## Timeouts
Default timeouts are configured at the HTTP level and must be set both on the gateway and the function. Default timeouts are configured at the HTTP level and must be set both on the gateway and the function.
@ -37,8 +27,8 @@ functions:
handler: ./sleepygo handler: ./sleepygo
image: alexellis2/sleeps-for-10-seconds image: alexellis2/sleeps-for-10-seconds
environment: environment:
read_timeout: 20 read_timeout: 20s
write_timeout: 20 write_timeout: 20s
``` ```
handler.go handler.go
@ -59,19 +49,20 @@ func Handle(req []byte) string {
For the gateway set the following environmental variables: For the gateway set the following environmental variables:
``` ```
read_timeout: 30 read_timeout: "25s" # Maximum time to read HTTP request
write_timeout: 30 write_timeout: "25s" # Maximum time to write HTTP response
upstream_timeout: "20s" # Maximum duration of upstream function call
``` ```
The default for both is "8" - seconds. In the example above "30" means 30 seconds. > Note: The value for `upstream_timeout` should be slightly less than `read_timeout` and `write_timeout`
### Timeouts - Function provider ### Timeouts - Function provider
If on Kubernetes and Swarm you should set a matching timeout for the faas-netesd or faas-swarm controller matching that of the gateway. When using a gateway version older than `0.7.8` a timeout matching the gateway should be set for the `faas-swarm` or `faas-netes` controller.
``` ```
read_timeout: 30 read_timeout: 25s
write_timeout: 30 write_timeout: 25s
``` ```
### Timeouts - Asynchronous invocations ### Timeouts - Asynchronous invocations
@ -138,6 +129,16 @@ Checklist:
* [ ] Check functions are deployed and started * [ ] Check functions are deployed and started
* [ ] Check request isn't timing out at the gateway or the function level * [ ] Check request isn't timing out at the gateway or the function level
## CLI unresponsive - localhost vs 127.0.0.1
On certain Linux distributions the name `localhost` maps to an IPv6 alias meaning that the CLI may hang. In these circumstances you have two options:
1. Use the `-g` or `--gateway` argument with `127.0.0.1`
This forces IPv4.
2. Edit the `/etc/hosts` file on your machine and remove the IPv6 alias for localhost.
# Troubleshooting Swarm or Kubernetes # Troubleshooting Swarm or Kubernetes
## Docker Swarm ## Docker Swarm
@ -178,30 +179,38 @@ $ docker service ls -q | xargs docker service rm
## Kubernetes ## Kubernetes
If you have deployed OpenFaaS to the recommended namespaces then functions are in the `openfaas-fn` namespace and the core services are in the `openfaas` namespace. The `-n` flag to `kubectl` sets the namespace to look at.
### List OpenFaaS services
```
$ kubectl get deploy -n openfaas
```
### List all functions ### List all functions
``` ```
$ kubectl get deploy $ kubectl get deploy -n openfaas-fn
``` ```
### Find a function's logs ### Find a function's logs
``` ```
$ kubectl logs deploy/FUNCTION $ kubectl logs -n openfaas-fn deploy/FUNCTION_NAME
``` ```
### Find out if a function failed to start ### Find out if a function failed to start
``` ```
$ kubectl describe deploy/FUNCTION $ kubectl describe -n openfaas-fn deploy/FUNCTION_NAME
``` ```
### Remove the OpenFaaS deployment ### Remove the OpenFaaS deployment
From within the `faas-netes` folder:
``` ```
$ git clone https://github.com/openfaas/faas-netes/ && \ $ kubectl delete -f namespaces.yml,./yaml/
cd faas-netes && \
kubectl delete -f ./yaml/
``` ```
# Watchdog # Watchdog