笔记摘自视频章节:第三章
主题
通过kubeadm初始化一个k8s集群
操作手册
- 查看kubeadm 默认初始化配置模板
kubeadm config print init-deafults > kubeadm_default.yaml- serviceSubnet:
- podSubnet: pod子网网段,默认会安装flannel进行网络配置,可以手动指定
- mode:
- 指定配置文件进行初始化:
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs |tee kubeadm-init.log- 高可用相关配置:--experimental-upload-certs
- 初始化步骤分析:
- 预检
- pull 镜像:需要科学上网,这一步可能因为墙卡住,可以
docker images查看镜像是否有在下载 - 一系列目录
- kubelet环境变量: /var/lib/kubelet/kubeadm-flags.env
- kubelet配置:/var/lib/kubelet/config.yaml
- k8s https ca证书: /etc/kubernetes/manifests
- dns配置 :
etcd/server serving cert is signed for DNS names [jjh-k8s-demo-master localhost] and IPs [172.16.13.128 127.0.0.1 ::1] - 拷贝配置文件
- join命令: node可以通过这个命令加入到同一网络平面的master中
- 时效一般是24h, 重新打印token:
kubeadm token create --print-join-command
- 时效一般是24h, 重新打印token:
- master初始化完成
kubectl get node查看发现master处于NotReady状态,这是因为K8S集群要求建立在一个扁平化的网络中。下一步需要部署网络,使用flannel,建立CNI(container network interface)- 使用别人写好的配置文件:kubectl apply -f raw.githubusercontent.com/coreos/flan…
- 查看:
kubel get pod -n kube-system, 查看kube-system这个命名空间中的pod信息 - 部署完成后,
ifoncfig可以发现一个新的网络设备,例如 flannel.1
- 子节点初始化:
- 基本逻辑类似于master,不用
kubeadm init, 只需要join到主节点中即可
- 基本逻辑类似于master,不用
- 主节点监控查看node加入状态:
kubectl get pods -o wide -w - 配置docker:
/etc/docker/daemon.json- 指定安全仓库: insecure-registries, 对一些没有CA证书的域名做豁免,告诉docker可以从这些仓库pull image
- 指定cgroupdriver: 修改文件配置
"exec-opts": ["native.cgroupdriver=systemd"]