Kubernetes_Advanced_Practical icon indicating copy to clipboard operation
Kubernetes_Advanced_Practical copied to clipboard

《kubernetes进阶实战》堪误信息

Open iKubernetes opened this issue 5 years ago • 13 comments

欢迎《kubernetes进阶实战》的读者朋友们在此处提交堪误信息!

iKubernetes avatar Apr 06 '19 04:04 iKubernetes

image

faryang-sh avatar Apr 15 '19 16:04 faryang-sh

image

faryang-sh avatar Apr 15 '19 16:04 faryang-sh

image

jiangwh avatar May 11 '19 10:05 jiangwh

6.62章节,排版错误。应该在正文163页。(截图是微信读书购买的电子版,非D版) 图片

mrhan1993 avatar May 15 '19 03:05 mrhan1993

<kubernetes进阶实战> 2019年1月第1版第1次印刷

  • 第2章 2.1.2 Controller P19 书中描述多了一个~~DaemonSet~~:控制器本身也是一种资源类型,它有着多种实现,其中与工作负载相关的实现如ReplicationController、Deployment、StatefulSet、DaemonSet、~~DaemonSet~~和Jobs等,也可统称他们为Pod控制器。……

  • 第7章 7.5.1 创建PV P187 书中描述:下面的资源清单配置示例中定义了一个使用NFS存储后端的PV,空间大小为**10GB**,支持多路的读写操作。…… 但是YAML中PV创建的空间大小是5GB

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-0001
  labels:
    release: stable
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path:  "/webdata/htdocs"
    server: nfs.ikubernetes.io
  • 第7章 7.5.4 存储类 P192 书中描述:“ 它定义了一个使用Gluster存储系统的存储类glusterfs,并通过**annotations**字段将其定义为默认的存储类: ” 但是在glusterfs-storageclass.yaml文件中并没有annotations字段 我认为这里是表述有误:annotations字段应该是用在定义PVC时将其使用的存储类默认为指定的存储类,但是我们本例中是定义存储类,这里不能通过annotations字段将其定义为默认的存储类。 书中的glusterfs-storageclass.yaml文件:
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: gluster-dynamic
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://172.16.2.36:8080" 
  restauthenabled: "false"
  • 第9章 9.1 StatefulSet概述 P227~231 这一小节写的真是乱啊[手动笑哭表情]! https://github.com/iKubernetes/Kubernetes_Advanced_Practical/issues/2#issuecomment-483331022 和 https://github.com/iKubernetes/Kubernetes_Advanced_Practical/issues/2#issuecomment-483332048 提出了里面的错误,我也认为书中错了。

  • 第12章 12.3.4 Pod反亲和性调度 P342 创建反亲和性Pod对象时应该用podAntiAffinity,而不是podAffinity 书中YAML为:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-with-pod-anti-affinity
spec:
  replicas: 4
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp
      labels:
        app: myapp
    spec:
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - {key: app, operator: In, values: ["myapp"]}
            topologyKey: kubernetes.io/hostname
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1

正确的应该为:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-with-pod-anti-affinity
spec:
  replicas: 4
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp
      labels:
        app: myapp
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - {key: app, operator: In, values: ["myapp"]}
            topologyKey: kubernetes.io/hostname
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1

lianghuiyuan avatar Jun 27 '19 23:06 lianghuiyuan

第七章 7.5.2创建PVC P189-190 文章中不少yaml内容排版有问题... 第一、描述:如果需要绑定此前创建的PV资源pv-rbd-0001,而pvc-rbd-0001.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-rbd-0001
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 2Gi
  storageClassName: fast
  selector:
    matchLabels:
      release: "stable"

但是在P88中给出的 pv-rbd-0001.yaml 中既没有metadata.labels.release: "stable",也没有spec.storageClassName: fast,这样时无法绑定的,而且该pv-rbd-0001.yaml 排版也有问题。但是github中已经给出pv-rbd-0001.yaml,请注意!

第二、第七章 7.5.2P190 中一处描述为”persistentVolumeClain存储卷“ 应为”persistentVolumeClaim“

anxinyf avatar Aug 03 '19 03:08 anxinyf

版次: 2019年1月第1版第2次印刷 第九章 9.6 Operator 概述 p247-18

并接需回馈社区

这句话,应该是打错了。无论怎么读都不合逻辑。

magichan avatar Dec 08 '19 09:12 magichan

是的,是持续回馈社区,多谢!-------- 原始邮件 --------发件人: magichan [email protected]日期: 2019年12月8日周日 傍晚5:32收件人: iKubernetes/Kubernetes_Advanced_Practical [email protected]抄送: iKubernetes [email protected], Author [email protected]主 题: Re: [iKubernetes/Kubernetes_Advanced_Practical] 《kubernetes进阶实战》堪误信息 (#2)版次: 2019年1月第1版第2次印刷

第九章 9.6 Operator 概述 p247-18

并接需回馈社区

这句话,应该是打错了。无论怎么读都不合逻辑。

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

iKubernetes avatar Dec 24 '19 11:12 iKubernetes

<kubernetes进阶实战> 2019年1月第1版第1次印刷

  • 第2章 2.1.2 Controller P19 书中描述多了一个~DaemonSet~:控制器本身也是一种资源类型,它有着多种实现,其中与工作负载相关的实现如ReplicationController、Deployment、StatefulSet、DaemonSet、~~DaemonSet~~和Jobs等,也可统称他们为Pod控制器。……
  • 第7章 7.5.1 创建PV P187 书中描述:下面的资源清单配置示例中定义了一个使用NFS存储后端的PV,空间大小为**10GB**,支持多路的读写操作。…… 但是YAML中PV创建的空间大小是5GB
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-0001
  labels:
    release: stable
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path:  "/webdata/htdocs"
    server: nfs.ikubernetes.io
  • 第7章 7.5.4 存储类 P192 书中描述:“ 它定义了一个使用Gluster存储系统的存储类glusterfs,并通过**annotations**字段将其定义为默认的存储类: ” 但是在glusterfs-storageclass.yaml文件中并没有annotations字段 我认为这里是表述有误:annotations字段应该是用在定义PVC时将其使用的存储类默认为指定的存储类,但是我们本例中是定义存储类,这里不能通过annotations字段将其定义为默认的存储类。 书中的glusterfs-storageclass.yaml文件:
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: gluster-dynamic
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://172.16.2.36:8080" 
  restauthenabled: "false"
  • 第9章 9.1 StatefulSet概述 P227~231 这一小节写的真是乱啊[手动笑哭表情]! #2 (comment)#2 (comment) 提出了里面的错误,我也认为书中错了。
  • 第12章 12.3.4 Pod反亲和性调度 P342 创建反亲和性Pod对象时应该用podAntiAffinity,而不是podAffinity 书中YAML为:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-with-pod-anti-affinity
spec:
  replicas: 4
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp
      labels:
        app: myapp
    spec:
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - {key: app, operator: In, values: ["myapp"]}
            topologyKey: kubernetes.io/hostname
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1

正确的应该为:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-with-pod-anti-affinity
spec:
  replicas: 4
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp
      labels:
        app: myapp
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - {key: app, operator: In, values: ["myapp"]}
            topologyKey: kubernetes.io/hostname
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1

哥们,你看书看的真细致啊,里面确实很多YAML格式的文件都有些问题。第9章的"Replicaset"应该是要写成"DeamonSet"吧,P230和P231中的

chuck6 avatar Mar 24 '20 12:03 chuck6

在第119页, 最后一行至120页第一行,使用patch更改镜像标签正确结果:kubectl patch -f myapp-deploy.yaml -p '{"spec": {"template": {"spec": {"containers": [{"image": "ikubernetes/myapp:v2","name":"myapp"}]}}}}'

书中原文:'{"spec": {"containers": ["image" "ikubernetes/myapp:v2","name":"myapp"}}'

slcnx avatar Jun 04 '20 23:06 slcnx

第129页, kubectl get pods -l job-name=job-example -a 不存在--show-all或-a

slcnx avatar Jun 05 '20 01:06 slcnx

第4章P97上方的代码块command的最后一个参数应当是--metrics-brief,原文少了一个-

AGou-ops avatar Aug 28 '20 13:08 AGou-ops

p140 没有postStop钩子函数吧,这里打印错误

imcco avatar Mar 28 '21 14:03 imcco