Kubernetes: Up and Running

Errata for Kubernetes: Up and Running

Submit your own errata for this product.


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.

Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question Note Update



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 
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 
Safari Books Online
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 
Safari Books Online
"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 
Safari Books Online
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 
Safari Books Online
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 
Safari Books Online
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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