The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Version |
Location |
Description |
Submitted By |
Date submitted |
Date corrected |
ePub |
Chapter 12 - Updating a container image |
Encountered an error when trying out following code snippet
spec:
template:
annotations: kubernetes.io/ change-cause: "Update nginx to 1.9.10" ...
I think it should be
...
spec:
template:
metadata:
annotations: kubernetes.io/ change-cause: "Update nginx to 1.9.10"
Note from the Author or Editor: The reporter is correct, 'metadata' is needed there. The indentation is important though, there should be 2 additional spaces on each subsequent line, it should look like this:
spec:
template:
metadata:
annotations: kubernetes.io/ change-cause: "Update nginx to 1.9.10"
Thanks
|
Roman S. |
Oct 25, 2017 |
Feb 02, 2018 |
Printed |
front cover |
The animal on the front cover is supposed to be a bottle nose dolphin, per the Colophon, but the animal pictured is a white-sided dolphin.
Considering old British book from which the picture was borrowed has the bottle nose and the white-sided dolphin two pages apart I can only assume that the intent was to get the bottle nose illustration and that the cover should be updated. Updating the colophon is the other option.
Note from the Author or Editor: You are correct! We will be updating the colophon in a future update.
|
Stephane Odul |
Nov 02, 2017 |
Feb 02, 2018 |
|
Service Discovery
Readiness Checks third paragraph from end of section |
Reads "Now go back to your browser and hit the “Fail” link for the readiness check. You should see that the server is not returning 500s. "
Should read:
Now go back to your browser and hit the “Fail” link for the readiness check. You should see that the server is now returning 500s.
That is, "not" should be "now".
Note from the Author or Editor: Reporter is correct the word 'not' should be removed.
|
Chris Stone |
Nov 03, 2017 |
Feb 02, 2018 |
|
"Creating a ReplicaSet" section in Chapter 8 |
In the section, there is a sentence that says as follows:
> The ReplicaSet configuration file in Example 8-1 will ensure one copy of the gcr.io/kuar-demo/kuard-amd64:1 container is running at a given time.
But it seems the configuration file tries to run a copy of "gcr.io/kuar-demo/kuard-amd64:2".
Note from the Author or Editor: Reporter is correct 'gcr.io/kuar-demo/kuard-amd64:1' should be 'gcr.io/kuar-demo/kuard-amd64:2'
|
Yasunori MAHATA |
Dec 07, 2017 |
Feb 02, 2018 |
|
Chapter 10 - POD FAILURE |
In Example 10-2, the filename is written as "job-oneshot-failure1.yaml", but the file is referred as "jobs-oneshot-failure1.yaml" in the following paragraph.
Note from the Author or Editor: Confirmed.
`kubectl apply -f jobs-oneshot-failure1.yaml`
Should be:
`kubectl apply -f job-oneshot-failure1.yaml`
I fixed this in the repo already.
|
Yasunori MAHATA |
Dec 13, 2017 |
Feb 02, 2018 |
|
Figure 6-1 |
I believe 3 of 4 labels ("alpaca-prod") in Figure 6-1 in the book Kubernetes: Up and Running should be "alpaca-test", "bandicoot-prod", and "bandicoot-staging".
Link to the page: https://www.safaribooksonline.com/library/view/kubernetes-up-and/9781491935668/ch06.html
Link to the figure: https://www.safaribooksonline.com/library/view/kubernetes-up-and/9781491935668/assets/kuar_06in01.png
Note from the Author or Editor: This is correct. The image should look like:
alpaca-prod bandicoot-prod
alpaca-test bandicoot-staging
|
Hirotake Shimoji |
Jan 22, 2018 |
Feb 02, 2018 |
|
The "Designing with ReplicaSets" paragrph in Chapter 8. ReplicaSets |
Sentence "Generally speaking, ReplicaSets are designed for stateles (or nearly stateless) services." has a typo. "designed for stateles" should be "designed for
stateless".
Note from the Author or Editor: Confirmed, that's a spelling mistake.
|
HIROTAKE SHIMOJI |
Feb 09, 2018 |
|
ePub |
Page ch 2
Dockerfile in Building Applications with Docker |
(from Safari books online, dont know the page number)
Under Building Applications with Docker in Ch 2, the thrid line of teh Docker file should read:
COPY bin/1/amd64/kuard /kuard
This is actually fixed in the Readme for the repo, per Issue #7.
I list it here because it is incorrect in the book, and for those following along in the book, it can cause a hiccup.
Note from the Author or Editor: Now fixed in the original source
|
David Glaubman |
May 17, 2018 |
|
|
Chapter 14
last paragraph |
First of all, a big thank you and congratulations to the authors, I love this book, I learned a lot in a short time and the language used is a pleasure to read.
In chapter 14 the Redis example unfortunately doesn’t work anymore with more recent Kubernetes versions (I’m using the v1.11.2). The reason is that in new Kubernetes versions the mounted volume related to the configmap is read-only (the change was made to address a security hole) and not read-write as with the version used at the time of writing.
Redis sentinel needs to write on /redis-config/sentinel.conf file otherwise exits with error; the pod is restarted forever and the whole deployment fails.
My simple solution (as a noob, maybe there are better ones) was to create an additional empty dir (which has RW permissions) in the sentinel container, copy the configmap files into this empty dir and point the sentinel over the copied files. It works fine. Attached below are the two files I tweaked from the book:
redis.yaml
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: redis
spec:
replicas: 3
serviceName: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- command: [sh, -c, source /redis-config/init.sh ]
image: redis:4.0.11-alpine
name: redis
ports:
- containerPort: 6379
name: redis
volumeMounts:
- mountPath: /redis-config
name: config
- mountPath: /redis-data
name: data
- command: [sh, -c, source /redis-config-src/sentinel.sh]
image: redis:4.0.11-alpine
name: sentinel
volumeMounts:
- mountPath: /redis-config-src
name: config
- mountPath: /redis-config
name: data
volumes:
- configMap:
defaultMode: 420
name: redis-config
name: config
- emptyDir:
name: data
sentinel.sh
#!/bin/bash
cp /redis-config-src/*.* /redis-config
while ! ping -c 1 redis-0.redis; do
echo 'Waiting for server'
sleep 1
done
redis-sentinel /redis-config/sentinel.conf
Note from the Author or Editor: This is an update for newer versions of Kubernetes. The example was correct and the time of writing but now needs to be updated. Applied to the source repo.
|
Antonio Massaro |
Oct 10, 2018 |
|
|
Chapter 5
Pod Manifest , 2nd paragraph |
"Pod manifests are processed by the Kubernetes API service, stored in persistent storage."
Missing an 'and'
"Pod manifests are processed by the Kubernetes API service, and stored in persistent storage."
Note from the Author or Editor: Good catch. Fixing now.
|
Joseph Engel |
Aug 03, 2017 |
Sep 05, 2017 |
|
Chapter 14
Configuring Redis |
This section states the default redis port is 6380, when in fact it is 6379.
Note from the Author or Editor: Good catch. I'm changing the example to use port 6379.
|
Joseph Engel |
Aug 04, 2017 |
Sep 05, 2017 |
|
|
Chapter 5. Pods > Pod Manifest > Creating a Pod Manifest
apiVersion: v1
kind: Pod
metadata:
name: influxdb
spec:
containers:
- image: b.gcr.io/kuar/influxdb:0.9.4.2
name: influxdb
ports:
- containerPort: 8083
name: admin
protocol: TCP
- containerPort: 8086
name: http
protocol: TCP
Error:
image can't be downloaded
Reason:
"On February 28th, 2017, the use of “bring-your-own-bucket” registries such as b.gcr.io and bucket.gcr.io is deprecated. Container Registry no longer serves any container images hosted in those buckets."
https://cloud.google.com/container-registry/docs/support/deprecation-notices
|
David Verdejo |
Sep 05, 2017 |
Sep 05, 2017 |
|
Chapter 7, Readiness checks section, |
Typo: not replace it with now. 3rd paragraph from bottom on section Readiness check, just after the command to get endpoints.
You should see that the server is not returning 500s.
should read
You should see that the server is now returning 500s.
|
Walid Shaari |
Sep 06, 2017 |
Feb 02, 2018 |
|
Chapter 12, section Updating Container Images |
The section for adding annotation is asking to add it to the template, not deployment, however, kubectl records change cause on the deployment metadata, not template metadata, could you please clarify? and how entering it manually will affect if one has used --record in first kubectl creation for the manifest
|
Walid Shaari |
Sep 07, 2017 |
Feb 02, 2018 |
|
14
I set page to 14, meaning chapter 14. I'm on safari books, so I don't see the page |
Into chapter 14: "Deploying Real-World Applications", onto the Ghost section, the authors suggest we create a ConfigMap from a file the following way:
$ kubectl apply cm --from-file ghost-config.js ghost-config
I tried this, and this caused an error on kubectl. I changed the command to:
$ kubectl create cm --from-file ghost-config.js ghost-config
The latter worked, as I believe the authors intended.
I hope this may help.
Kind Regards!
Alberto Biasao
Note from the Author or Editor: The reporter is correct 'kubectl apply' should be 'kubectl create'
Thanks!
|
Alberto Biasao |
Oct 09, 2017 |
Feb 02, 2018 |
PDF |
Page 14
The last paragraph |
A project that is standardizing the container image format is not Open Container Image (OCI) project but Open Container Initiative (OCI) https://www.opencontainers.org/.
Note from the Author or Editor: The reporter is correct. "Open Container Image" should be "Open Container Initiative"
|
Hayato Matsuura |
Nov 25, 2017 |
Feb 02, 2018 |
Printed |
Page 21
Summary |
Chapter 2 summary refers to Docker's ability to mount external directories, yet the chapter did not cover this topic!
Note from the Author or Editor: The reporter is correct. I re-worked the summary in the books Atlas repository.
|
Xabriel Collazo Mojica |
Dec 01, 2017 |
Feb 02, 2018 |
Other Digital Version |
24
Google Container Service |
This command ...
$ gcloud container clusters create kuar-cluster
Does not produce this ...
$ kubectl get nodes
NAME STATUS AGE
kubernetes Ready,master 45d
node-1 Ready 45d
node-2 Ready 45d
node-3 Ready 45d
But this ...
$ kubectl get nodes
NAME STATUS AGE VERSION
gke-kuar-cluster-default-pool-c7891302-2f1v Ready 42m v1.7.6
gke-kuar-cluster-default-pool-c7891302-34pk Ready 42m v1.7.6
gke-kuar-cluster-default-pool-c7891302-8q56 Ready 42m v1.7.6
The kubernetes master does not display, and the nodes are not named, "node-1", etc.
Note from the Author or Editor: Edited the original. This is tricky because it will never match exactly. Added a note to this effect.
|
Anonymous |
Oct 20, 2017 |
Feb 02, 2018 |
PDF |
Page 30
First code section |
Text claims that running:
kubectl get daemonSets --namespace=kube-system kube-proxy
should show kube-proxy. It returns the below error. And, omitting kube-proxy on the command line only shows fluentd, not kube-proxy.
[tom@MacBook-Pro python]$ kubectl get daemonSets --namespace=kube-system kube-proxy
Error from server (NotFound): daemonsets.extensions "kube-proxy" not found
[tom@MacBook-Pro python]$ kubectl get daemonSets --namespace=kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE-SELECTOR AGE
fluentd-gcp-v2.0 3 3 3 3 3 beta.kubernetes.io/fluentd-ds-ready=true 20m
Note from the Author or Editor: Good catch. Not all clusters will use DaemonSets to run the proxy. It can be configured and managed outside of Kubernetes. I'm updating the section to make it clear that many clusters will use a DaemonSet here but not all.
|
matommy |
Jul 15, 2017 |
Feb 02, 2018 |
PDF |
Page 33
introduction |
Two references to the UTC namespace. I believe this should be the UTS namespace.
Note from the Author or Editor: Yup -- good catch. This has been updated in the latest versions of the book.
|
George V. Reilly |
Nov 03, 2015 |
Sep 05, 2017 |
Printed |
Page 47
1st paragraph |
The command provided to show details of the restart is wrong: It should read "kubectl describe pod kuard" instead of "kubectl describe kuard".
Note from the Author or Editor: The reporter is correct.
'kubectl describe kuard'
should be:
'kubectl describe pods kuard'
|
Bernd K. |
Oct 30, 2017 |
Feb 02, 2018 |
Printed |
Page 52
"Mounting the host filesystem" chapter |
The "Mounting the host filesystem" chapter talks about "hostDir" volumes whereas the previous example referenced and the Kubernetes documentation talk about "hostPath" volumes.
Note from the Author or Editor: Reporter is correct 'hostDir' should be 'hostPath' everywhere.
|
Bernd K. |
Oct 30, 2017 |
Feb 02, 2018 |
ePub |
Page 57
First paragraph after a list of kubectl commands to enter |
The following code example:
kubectl label pods bar -color
The dash must be after the "color"? E.g:
kubectl label pods bar color-
Note from the Author or Editor: The reporter is correct, '-color' should be 'color-'
|
Ievgen Pyrogov |
Oct 16, 2017 |
Feb 02, 2018 |
Printed |
Page 67
"Service DNS" chapter |
The respective section in the kuard UI is called "DNS Query", not "DNS Resolver".
Note from the Author or Editor: Correct, please replace "DNS Resolver" with "DNS Query"
|
Bernd K. |
Oct 30, 2017 |
Feb 02, 2018 |
Printed |
Page 68
1st paragraph |
The formatting of "svc" and "cluster.local" as well as the corresponding explanations is broken. It should be the same as "alpaca-prod" and "default" on the previous page.
Note from the Author or Editor: Acknowledged. One of the definition list entries needs a newline.
Fixed in the repository.
|
Bernd K. |
Oct 30, 2017 |
Feb 02, 2018 |
Printed |
Page 69
4th paragraph |
The respective kuard section is called "Readiness Probe", not "Readiness Check".
Note from the Author or Editor: Fixed in repository.
|
Bernd K. |
Oct 30, 2017 |
Feb 02, 2018 |
Printed |
Page 75
1st paragraph |
The respective section in the kuard example application is called "Server Env", not "Environment". In the table shown, the first column is called "Key", not "Name".
Note from the Author or Editor: Fixed in book repository.
|
Bernd K. |
Oct 30, 2017 |
Feb 02, 2018 |
PDF |
Page 81
Section Labeling and Annotating Objects, 4th paragraph |
"If you want to remove a label, you can use the -<label-name> syntax:
$ kubectl label pods bar -color
This should instead be "<label-name>- syntax":
$ kubectl label pods bar color-
The above correction was found from "kubectl label --help":
# Update pod 'foo' by removing a label named 'bar' if it exists.
# Does not require the --overwrite flag.
kubectl label pods foo bar-
Note from the Author or Editor: The reporter is correct '-color' should be 'color-'
|
Agrim Prasad |
Oct 07, 2017 |
Feb 02, 2018 |
ePub |
Page 81
1st paragraph |
"...the POD manifested" should read "...the POD manifest"?
Note from the Author or Editor: Reporter is correct 'manifested' should be 'manifest'
|
Ievgen Pyrogov |
Oct 16, 2017 |
Feb 02, 2018 |
ePub |
Page 85
First paragraph after a list of kubectl commands to enter |
Sentence starting with:
"You should have four deployments—alpaca-prod, alpaca-staging..."
It should be alpaca-test, not alpaca-staging.
Also, the Figure 6-1. The Venn digram only depicts 4 instances of alpaca-prod! Where are alpaca-test, bandicoot-staging, bandicoot-prod?
Note from the Author or Editor: confirmed. 'alpaca-staging' should be 'alpaca-test'
Also the illustration needs to be fixed as described.
|
Ievgen Pyrogov |
Oct 16, 2017 |
Feb 02, 2018 |
Printed |
Page 88-89
code at the bottom of the page |
The code in Example 9-1 is creating a DaemonSet in the namespace kube-system, but then the command to describe it at the bottom of page 89 does not specify the --namespace=kube-system filter, ending up in the DaemonSet not being returned by the API.
Feels like the intention was to make this a default namespace resource, so I would suggest to change the code and remove the namespace: kube-system qualification.
Note from the Author or Editor: Fixed in the atlas repo.
|
Mauro Giusti |
Dec 06, 2018 |
|
ePub |
Page 103
First paragraph |
The sentence:
"You should see that the server is not returning 500s."
Must contains redundant "not"? E.g. is must read:
"You should see that the server is returning 500s."
Note from the Author or Editor: Confirmed. 'not' should be deleted.
|
Ievgen Pyrogov |
Oct 16, 2017 |
Feb 02, 2018 |
Printed |
Page 113
At the end of the page, right before the last paragraph. |
The text states that mounting the kuard-tls secrets volume (which includes two data elements, kuard.crt and kuard.key) will result into the following files:
/tls/cert.pem
/tls/key.pem
being visible from the pod. Shouldn't the visible files be
/tls/kuard.crt
/tls/kuard.key
instead?
Note from the Author or Editor: Error confirmed. Fixed in the original source in Atlas.
|
Miguel Martínez |
Mar 29, 2018 |
|
ePub |
Page 114
Last paragraph |
There's a redundant "in" the sentence containing the following:
"...a cookie cutter and a desired of number of cookies..."
Must not contain redundant "of"? E.g. is must read:
"...a cookie cutter and a desired number of cookies..."
Note from the Author or Editor: Reporter is correct, delete the 'of' before 'number'
|
Ievgen Pyrogov |
Oct 16, 2017 |
Feb 02, 2018 |
PDF |
Page 130
Designing with ReplicaSets |
Part of the sentence reads as follows:
“...ReplicaSets are designed for stateles (or nearly stateless) services”
Excerpt From: Kelsey Hightower, Brendan Burns & Joe Beda. “Kubernetes: Up and Running.”
I think `stateles` should be `stateless`.
Note from the Author or Editor: The reporter is correct 'stateles' should be 'stateless'
Thanks
|
Elrick Ryan |
Sep 22, 2017 |
Feb 02, 2018 |
PDF |
Page 132
Figure 12-1 |
In the example of a couple application architecture in Figure 12-1, the boxes at the bottom are labeled as "Frontend". However, frontend servers are at the top so the ones at the bottom should be "Backend".
Note from the Author or Editor: Reporter is correct. Boxes on the lower right-hand side of the illustration should be labelled "Backend #1" and "Backend #N", instead of "Frontend #1" and "Frontend #N".
The boxes on the upper right hand side of the illustration are labelled correctly.
|
Hayato Matsuura |
Nov 25, 2017 |
Feb 02, 2018 |
ePub |
Page 132
Chapter 9, subheading "Updating a DaemonSet by Deleting Individual Pods" |
The current code snippet is this:
PODS=$(kubectl get pods -o jsonpath -template='{.items[*].metadata.name}'
for x in $PODS; do
kubectl delete pods ${x}
sleep 60
done
There are 2 typos in that snippet:
1. It should be using `--template` instead of `-template`
2. The closing parenthesis is missing from the line PODS=$(...
The correct snippet should look like this:
PODS=$(kubectl get pods -o jsonpath --template='{.items[*].metadata.name}')
for x in $PODS; do
kubectl delete pods ${x}
sleep 60
done
Note from the Author or Editor: Confirmed, and fixed in atlas source.
|
Janos Lenart |
Apr 15, 2018 |
|
ePub |
Page 132
Chapter 9, subheading "Rolling Update of a DaemonSet", paragraph 4 |
The formula for estimating the amount of time for the rollout should refer to `minReadySeconds` instead of `maxReadySeconds`
Note from the Author or Editor: Confirmed and fixed in source.
|
Janos Lenart |
Apr 15, 2018 |
|
PDF |
Page 135
kubectl command to scale the kuard replicaSet |
In the replicaSet Chapter on page 135 there is a command to imperatively scale up as follows ` kubectl scale kuard --replicas=4` that returns an error in the console.
The Error reads: error: resource(s) were provided, but no name, label selector, or --all flag specified
I was able to get the command to execute by adding `rs` to the command as follows.
`kubectl scale rs kuard --replicas=4` which then returned this message in the console "replicaset "kuard" scaled".
Note from the Author or Editor: The reporter is correct. The command should read:
kubectl scale replicasets kuard --replicas=4
Thanks!
|
Elrick Ryan |
Sep 22, 2017 |
Feb 02, 2018 |
PDF |
Page 140
1st paragraph under `Naming Constraints` |
The paragraph reads:
The key names for data items inside of a secret or ConfigMap are defined to map to valid environment variable names. They may begin with a dot followed by a letter or number. Following characters include dots, dashes, and underscores. Dots cannot be repeated and dots and underscores or dashes cannot be adjacent to each other. More formally, this means that they must conform to the regular expression [.]?[a-zAZ0-9]([.]?[-_a-zA-Z0-9]*[a-zA-Z0-9])*.
As I understand the intent of the paragraph the name `.a1e.---_beta` should be invalid, but it is a match against the supplied regex pattern.
Note from the Author or Editor: Confirmed. The correct regular expression is:
^[.]?[a-zAZ0-9]([.]?[a-zA-Z0-9]+[-_a-zA-Z0-9]?)*$
Fixed in the second edition.
|
Anonymous |
May 30, 2019 |
|
PDF |
Page 148
3rd section |
“Adding the ssd=true label to additional nodes will case the nginx-fast-storage Pod to be deployed on those nodes. ”
Typo: "Case" should be "Cause"
Note from the Author or Editor: the reporter is correct. 'case' should be 'cause'
|
Elrick Ryan |
Sep 22, 2017 |
Feb 02, 2018 |
Printed |
Page 157
Sample at the top of the page |
The environment variables used to configure the parse-server application are all missing the PARSE_SERVER_ prefix in sample 14-1.parse.yaml. Updating the Deployment object using the following spec.env section fixes the issue:
---
env:
- name: PARSE_SERVER_DATABASE_URI
value: "mongodb://mongo-0.mongo:27017,\
mongo-1.mongo:27017,mongo-2.mongo\
:27017/dev?replicaSet=rs0"
- name: PARSE_SERVER_APPLICATION_ID
value: my-app-id
- name: PARSE_SERVER_MASTER_KEY
value: my-master-key
---
Reference: https://github.com/parse-community/parse-server/blob/master/README.md#using-environment-variables-to-configure-parse-server
Note from the Author or Editor: Confirmed, and corrected in the upstream repository.
|
Pierre Beitz |
Feb 11, 2018 |
|
Printed |
Page 158
Chapter 13 - Configuring Ghost |
The text talks about "Once you have this configuration file saved to config.js ..." whereas the example file and command line talk about the file being named "ghost-config.js". So, I think the text should read "Once you have this configuration file saved to ghost-config.js ...".
Note from the Author or Editor: Confirmed. 'config.js' should be 'ghost-config.js'
|
Bernd K. |
Nov 08, 2017 |
Feb 02, 2018 |
Printed |
Page 159
Chapter 14 - Configuring Ghost |
The ghost.yaml shown (and also the version at https://github.com/kubernetes-up-and-running/examples/blob/master/14-4-ghost.yaml) didn't work for me for two reasons:
1. The yaml file reads
cp /ghost-config/config.js /var/lib/ghost/config.js
whereas the config file was previously called ghost-config.js, so it should read
cp /ghost-config/ghost-config.js /var/lib/ghost/config.js
2. I'm not totally sure about the canonical solution here, but:
a) /entrypoint.sh doesn't exist in the Dockerfile as far as I can see, but there's /usr/local/bin/docker-entrypoint.sh instead
b) There doesn't seem to be a package.json so calling /usr/local/bin/docker-entrypoint.sh with 'npm start' as indicated in the yaml file leads to npm complaining about the missing package.json. What worked for me was to instead call node directly with the CMD provided in the Dockerfile:
&& /usr/local/bin/docker-entrypoint.sh node current/index.js
So, putting it all together, this command is working for me:
...
command:
- sh
- -c
- cp /ghost-config/ghost-config.js /var/lib/ghost/config.js
&& /usr/local/bin/docker-entrypoint.sh node current/index.js
...
Note from the Author or Editor: Reporter is correct. I fixed this erratta in the book repository.
|
Bernd K. |
Nov 14, 2017 |
Feb 02, 2018 |
Printed |
Page 160
Chapter 14 - Ghost + MySQL |
The chapter talks about config.js ("...first modify config.js to include:") and also the kubectl command says
kubectl create configmap ghost-config-mysql --from-file config.js
whereas previously, the configuration file was called ghost-config.js, so it would be:
kubectl create configmap ghost-config-mysql --from-file ghost-config.js
Note from the Author or Editor: Reporter is correct. I fixed this error in the text.
|
Bernd K. |
Nov 14, 2017 |
Feb 02, 2018 |
Printed |
Page 169
Paragraph 13 |
Where you say "Then configure the DHCP server as follows:" you should reference the file you need to edit with the additional information.
i.e. This should read, "Then configure the DHCP server by editing /etc/dhcp/dhcpd.conf as follows:"
Note from the Author or Editor: Thanks. This has been fixed in the second edition.
|
Michael Davies |
May 14, 2019 |
|
Printed |
Page 170
3rd paragraph |
Here you suggest that you restart the DHCP server with "sudo systemctl restart dhcpd". This is incorrect, it should be: "sudo systemctl restart isc-dhcp-server"
Note from the Author or Editor: Fixed in the second edition.
|
Michael Davies |
May 14, 2019 |
|
Printed |
Page 170
paragraph 7 |
After suggesting the edit to /etc/sysctl.conf you need to reboot for the change to take effect.
Note from the Author or Editor: fixed in source.
|
Michael Davies |
May 14, 2019 |
|
Printed |
Page 171
paragraph 15 |
In the `kubeadm init` command you use `--api-advertise-addresses` when it should be `--apiserver-advertise-address`
Note from the Author or Editor: Fixed in second edition.
|
Michael Davies |
May 14, 2019 |
|
PDF |
Page 178
second code section |
getting the details of the fluentd daemonSt you say use the command:
kubectl describe demonset fluentd
this returns nothing, however specifying the kube-system namespace does return this daemonset:
kubectl describe daemonset fluentd --namespace=kube-system
Note from the Author or Editor: Reporter is correct, we should add '--namespace=kube-system' to that command.
|
Izaak Alpert |
Oct 30, 2017 |
Feb 02, 2018 |
PDF |
Page 182
curl commands to create files |
There are two commands to curl to get a crt and key in the book it says that these files are created locally however i think you need to write the response to a file
such as::
“curl -O https://storage.googleapis.com/kuar-demo/kuard.crt >> kuard.crt”
Note from the Author or Editor: Confirmed, the two lines should read:
$ curl -o kuard.crt https://storage.googleapis.com/kuar-demo/kuard.crt
$ curl -o kuard.key https://storage.googleapis.com/kuar-demo/kuard.key
I have fixed this in the Atlas repo.
|
Elrick Ryan |
Sep 22, 2017 |
Feb 02, 2018 |
ePub |
Page 193
3rd paragraph |
There are words:
> Imagine that we have test and product namespaces defined.
Must be changed to:
> Imagine that we have test and prod namespaces defined.
Note from the Author or Editor: 'product' should be 'production' fixed in the repository.
|
Ievgen Pyrogov |
Nov 26, 2017 |
Feb 02, 2018 |
ePub |
Page 208
1st paragraph of the note |
There are words:
> Since we want our main Mongo container to be restarted...
Should be changed to:
> Since we do not want our main Mongo container to be restarted...
Note from the Author or Editor: reporter is correct, fixed in the repo.
|
Ievgen Pyrogov |
Nov 26, 2017 |
Feb 02, 2018 |
ePub |
Page 217
last half of the page (nfs-volume.yaml) |
For the mysql singleton example, both the nfs volume & and nfs volume claim yaml files will not work as written since kubernetes requires you to specify accessModes (spec.accessModes).
Note from the Author or Editor: Reporter is correct. I have corrected the text in the repository, no further corrections necessary.
|
Andrew Lee |
Oct 17, 2017 |
Feb 02, 2018 |
ePub |
Page 226
first command on the page |
In Chapter 13, in the mongo stateful set example...
[$kubectl exec mongo-0 bash ping mongo-1.mongo] will not work with the specified StateFull set definition, the reason being curl does not come pre-installed on the default mongo Docker image. I'm not exactly sure what image the default mongo image is built on top of (e.g. alpine, scratch, wheezy), but in order to get the example to work, I had to change the image spec.template.containers.image value from mongo 3.4.1 to mongo:3.4.9-jessie.
Then running [$kubectl exec -it mongo-0 /bin/bash], I installed curl via [$apt update && apt install iputils-ping].
Then everything else works as listed in the book
Note from the Author or Editor: The reporter is correct. I have fixed this in the book's original repository. No further action is needed.
|
Andrew Lee |
Oct 17, 2017 |
Feb 02, 2018 |
ePub |
Page 232
Middle |
Incorrect tabbing of readiness probe portion of the mongo example
Written as: "livenessProbe:\n\texec:\n\t\tcommand:\n\t\t\t- /usr/bin/mongo\n\t\t\t- --eval\n\t\t\t- db.serverStatus()\n\t\tinitialDelaySeconds: 10\n\t\ttimeoutSeconds: 10\n", should be "livenessProbe:\n\texec:\n\t\tcommand:\n\t\t\t- /usr/bin/mongo\n\t\t\t- --eval\n\t\t\t- db.serverStatus()\n\tinitialDelaySeconds: 10\n\ttimeoutSeconds: 10\n"
Note from the Author or Editor: Reporter is correct.
Tabbing fixed in the origin Atlas repo.
|
Andrew Lee |
Oct 17, 2017 |
Feb 02, 2018 |
ePub |
Page 234
2nd paragraph in the "Installing Kubernetes" section |
There are words:
> Using SSH, run the following commands on all nodes to the kubelet and kubeadm tools.
Should be changed to:
> Using SSH, run the following commands on all nodes to install the kubelet and kubeadm tools.
Note from the Author or Editor: reporter is correct, the word 'install' should be added.
|
Ievgen Pyrogov |
Nov 26, 2017 |
Feb 02, 2018 |
PDF |
Page 258
dns-service.yaml code sample |
ultra minor!
externalName: "database.company.com
should be
externalName: "database.company.com"
or
externalName: database.company.com
Note from the Author or Editor: Reporter is correct, we should delete the initial '"'
|
John Alpert |
Oct 31, 2017 |
Feb 02, 2018 |
Other Digital Version |
411
Dockerfile section. |
I'm using a kindle version in location 411 there is a Dockerfile example that provides no context.
```
FROM alpine
MAINTAINER Kelsey Hightower <kelsey.hightower@kuar.io>
COPY bin/kuard /kuard
ENTRYPOINT ["/kuard"]
```
The book does not explain from where is the directory bin or file kuard.
The book has a link to the git repo but there is no directory bin.
There is one issue open about this problem in github.
Note from the Author or Editor: Added some text that indicates that you need to build the binary.
|
Roger Gomez |
Nov 02, 2017 |
Feb 02, 2018 |