美文网首页
k8s节点环境安装

k8s节点环境安装

作者: Robin92 | 来源:发表于2022-03-20 00:02 被阅读0次

(图:master 和 node 各需要什么服务,如何通信)

master 节点环境准备

master 节点需要以下四个服务:

  • etcd, 作为默认的持久化存储
  • apiserver, apiserver 在哪里,哪里就是 master 节点
  • controller-manager, 用于控制
  • scheduler, 用于调度

安装 ETCD

  1. 安装 yum install etcd -y
  2. 改配置 vim /etc/etcd/etcd.conf
    1. ETCD_LISTEN_CLIENT_URLS 的 localhost 改为 0.0.0.0 (开启远程也可以访问)
    2. ETCD_ADVERTISE_CLIENT_URLS 的 Localhost 改为本机 IP 172.16.156.128
    3. 阅读一下其他配置,如 ETCD_DATA_DIR,ETCD_NAME (集群环境中用的)
  3. 启动 systemctl start etcd.service
  4. 设置开机自启动 systemctl enable etcd.service

通过 netstat -lntup 查看 etcd 占用端口有两个:2379、2380。

  • 2379 对所有IP开放是因为他是写数据用对;
  • 2380 只对自己主机开放。
netstat

注:netstat 在 macOS 上和 linux 上的使用好像不一样。回头要学习一下。

ETCD 是个高度一致的分布式键值存储,ectdctl 是一个客户端工具。k8s 使用了 ETCD 持久化存储了配置信息。 基本使用:

etcdctl ls [etcd_dir] # 一层一层列出目录
etcdctl get <dir> # 显示目录存储的数据

参考 官方文档官方中文网

新装 etcd 遇到错误 read wal error 解决方法:
直接现象:kube-apiserver 启动一直失败。一个个调查发现 systemctl 启动 etcd 也失败了
通过 journalctl -xe -u etcd 查看 etcd 的信息,最后看到一条 read wal error (proto: Record: illegal tag 0 (wire type 0)) and cannot be repaired 信息
偶然从 ETCD_DATA_DIR 目录中看到此目录并尝试将其删除 rm /var/lib/etcd/default.etcd/member/wal/*,重新启动 etcd 成功(这个像是发 rpc 的 protobuf)
修复之后 kube-apiserver 启动也成功了。

安装 k8s-master

安装命令

yum install kubernetes-master.x86_64 -y

此命令会安装依赖包 kubernetes-client 包,这个包中包含 kubectl 命令。

通过这种方式和其它方式可能还不一样,当前这种方式安装的是 kubectl --versionKubernetes v1.5.2 版本。

编辑配置

  • apiserver 的配置文件是 /etc/kubernetes/apiserver
  • controller-manager、scheduler 共用一个配置文件 /etc/kubernetes/config

编辑 apiserver 配置

apiserver文件 config文件

启动三个服务

systemctl start kube-apiserver.service # 启动
systemctl enable kube-apiserver.service # 开机自启动
systemctl start kube-controller-manager.service
systemctl enable kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl enable kube-scheduler.service

node 节点环境准备

node 节点提供服务需要有两个服务: kubelet 和 kube-proxy

由于本案例中 master 节点也作为一个 node 提供服务,所以在 master 节点上也同样需要执行以下安装操作。

yum install kubernetes-node.x86_64 -y

安装过程中会给节点自动安装 docker。

配置

各节点配置 Kubelet (/etc/kubernetes/kubelet)。

  • master 节点是通过 api-server 与各节点的 kubelet 通信,故 kubelet 配置的端口需要和 master 中保持一致(当前是 10250).

另外配置 kubelet 的访问地址为对外的 IP(外界用此 IP 可访问)

KUBELET_HOSTNAME 是通过 域名来访问 IP,需要做 host 解析(/etc/hosts)

配置 KUBELET_API_SERVER 的地址

kubelet 配置

启动服务

启动 Kubelet 会自动启动 docker,查看 docker 启动状态用命令 systemctl status docker

systemctl start kubelet.service # 启动kubelet
systemctl enable kubelet.service # 设置开机自启
systemctl start kube-proxy.service # 启动 kube-proxy
systemctl enable kube-proxy.service # 设置开机自启

查看节点

在 master 上执行以下命令查看所有节点:

kubectl get nodes
截屏2022-03-13 下午11.18.29.png

相关文章

网友评论

      本文标题:k8s节点环境安装

      本文链接:https://www.haomeiwen.com/subject/ttfodrtx.html