购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 快速构建Control Plane

本节使用kubeadm快速构建Control Plane,具体步骤说明如下。

1.使用kubeadm初始化Kubernetes集群

初始化Kubernetes集群,命令如下。

上述命令参数说明如下。

1)--kubernetes-version=1.20.1用来指定Kubernetes的版本,如果不指定,则运行上面的init命令时,会有下面的告警。

2)--image-repository registry.aliyuncs.com/google_containers用来指定国内的Registry,默认的国外Registry连接慢,有的时候连接不上。

3)--pod-network-cidr=192.168.2.0/24用来指定Pod所在的子网,Kubernetes中新建的Pod的IP地址都会在此网段。

4)--service-cidr=10.96.0.0/12用来指定Service虚拟IP的子网,Kubernetes中新建的Service的虚拟IP地址都会在此网段。如果我们不指定--service-cidr,则proxy起来的时候,会报找不到配置的WARN。

上述命令执行后,如果系统输出以下内容,则说明“Control Plane”初始化成功。

同时还会输出以下信息(每个人的token会不同),用于Node节点加入Kubernetes。

kubeadm会启动若干Pod,如图2-4所示。其中coredns开头的Pod有两个,它们目前为Pending状态,待后续为Kubernetes创建Pod网络后,它们的状态就会变成Running;etcd-master、kube-apiserver-master、kube-controller-manager-master和kube-scheduler-master这四个Pod是Control Plane的四个组件的Pod;kube-proxy-ntvj5是kube-proxy的Pod,它用于外部对本节点的Kubernetes组件的访问。

图2-4 Pod信息图

图2-4中每个状态为Running的Pod包含两个容器,可以使用下面的命令来查看这些容器的名称和程序。

上述命令执行后,显示的容器名称和程序如图2-5所示。

图2-5 容器信息图

以kube-scheduler-master为例,该Pod的容器说明如下。

k8s_kube-scheduler_kube-scheduler-master_kube-system_5fd6ddfbc568223e0845f80bd6fd6a1a_9(简称k8s_kube-scheduler),k8s_kube-scheduler容器运行kube-scheduler二进制程序。

k8s_POD_kube-scheduler-master_kube-system_5fd6ddfbc568223e0845f80bd6fd6a1a_9(简称k8s_POD_kube-scheduler-master),k8s_POD_kube-scheduler-master容器运行pause程序,称之为pause容器,pause容器是该Pod中所有容器的“父容器”,它有两大功能:首先,它是该Pod中Linux namespace共享的基础;其次,在启用了PID(进程ID)namespace共享的情况下,它充当每个Pod的第一个进程(PID=1),并用于捕获僵尸进程。

kubeadm从Registry拉取的容器镜像,如图2-6所示。

图2-6 镜像信息图

2.Kubernetes连接准备

Kubernetes初始化后,可以使用kubectl命令连接到Kubernetes,在连接之前需要按照kubeadm初始化成功后的提示,执行以下操作,否则,kubectl无法找到正确的配置,也就不能连接到Kubernetes。

3.创建Kubernetes的Pod网络

按照kubeadm初始化成功后的提示(如下所示),还要为Kubernetes部署Pod所使用的网络。

在https://kubernetes.io/docs/concepts/cluster-administration/addons/的“Networking and Network Policy”选项下,有各类Kubernetes网络及网络策略,如图2-7所示。

图2-7 Kubernetes网络及其策略列表

本书选择Calico,Calico既提供Pod网络,又提供网络策略,功能强大且配置简单灵活,是Kubernetes实际应用中的经典网络之一,具体部署步骤如下。

1)下载calico的YAML文件,命令如下。

2)改calico.yaml中的CIDR,修改成192.168.2.0/24,命令如下。

3)创建calico网络,命令如下。

后续如果要修改网络配置,可以使用下面的命令先删除calico网络,再重新创建。

4)查看calico的Pod信息,命令如下。

如图2-8所示,Pod calico-kube-controllers分配的IP是192.168.2.3,正是calico.yaml文件中所配置的子网内的IP,此外之前状态为Pending的两个coredns Pod,现在的状态也变成了Running。

图2-8 calico网络Pod列表 lox4sKXVf0BDq74FN9Dt0PbLgvRy6NDfXbkMhpYO2AAJjMR0wgd4+W6k+WAEpB6k

点击中间区域
呼出菜单
上一章
目录
下一章
×