k8s-config
K8S 学习笔记之–集群配置
借助 kubeadm 这一工具快速完成搭建与学习.
安装初始化工具
主要是: kubeadm, kubelet, kubectl (所有机器上都需要)
创建 repo
源:
1 | [kubernetes] |
安装:
yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes
启动初始化工具并设定随机启动:
systemctl enable kubelet && systemctl start kubelet
解除防火墙限制:
1 | vi /etc/sysctl.d/k8s.conf |
预下载/拉取镜像(Master 机器执行):
kubeadm config images list # 查看集群初始化所需镜像及依赖版本号
一般会失败,需要手动拉取,从阿里云拉取。使用脚本统一一次性拉取:
1 | mkdir scripts |
脚本具体内容: https://gitee.com/lomospace/k8s/blob/master/scripts/k8s_base_image.sh
执行脚本:
1 | cd scripts |
通过 kubeadm config images pull
确认镜像拉取成功:
初始化 kubeadm(master)
1 | kubeadm init --kubernetes-version=v1.16.2 --apiserver-advertise-address=192.168.56.104 --pod-network-cidr=192.168.0.0/16 |
报错了:
解决方案: 修改 虚拟机 CPU,重启后重新执行kubeadm init
操作即可.
init 常用主要参数:
- –kubernetes-version: 指定Kubenetes版本,如果不指定该参数,会从google网站下载最新的版本信息
- –pod-network-cidr: 指定pod网络的IP地址范围,它的值取决于你在下一步选择的哪个网络网络插件
- –apiserver-advertise-address: 指定master服务发布的Ip地址,如果不指定,则会自动检测网络接口,通常是内网IP。
- –feature-gates=CoreDNS: 是否使用CoreDNS,值为true/false,CoreDNS插件在1.10中提升到了Beta阶段,最终会成为Kubernetes的缺省选项
Init 过程日志输出:
默认情况下, 生成的 token 有效期为 24h
继续:
1 | mkdir -p $HOME/.kube |
该步骤必须执行, 否则会提示: The connection to the server localhost:8080 was refused - did you specify the right host or port?
查看 pods
状态
kubectl get pods -n kube-system
Node 加入
在上面 init
最后, 输出了形如: kubeadm join 192.168.56.104:6443 --token ........
, 复制,然后在 node 机器上执行即可.
查看所有 nodes
:
kubectl get nodes
此时发现均为 NotReady
状态, 因为 master
节点还未安装网络插件.
安装网络插件(master)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
部署完成后, 过一会即可看到它自动刷新后的结果:
注意: 集群中的master和node节点的hostname不能重复,否则会加入集群失败!!!
相关操作命令
删除集群中的 node
:
kubectl delete node node3
重新创建 token:
kubeadm token create
查看 token:
Kubeadm token list
查找 hash:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //‘
版权声明:
本文由Lomo创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,
转载请注明作者及出处,本文作者为Lomo,本文标题为k8s-config.