Kubernetes 入门篇之 Node 安装与部署

上篇记录了Master节点的安装与部署,本篇记录一下node的安装与部署。

1. 基础环境配置

  1. 关闭防火墙与交换分区(swap),关闭selinux,配置yum源参考上篇;
  2. 启用 IPv4 数据包转发 和 iptables 网络过滤参考上篇;
  3. 安装 containerdruncgo 也参考上篇, 也可以将编译好的二进制可执行文件直接复制到当前节点。
  4. 修改主机名,执行 hostnamectl set-hostname k8s-node1, 因为各节点之间的主机名和mac地址必须唯一。

2. 安装

2.1 安装kubeadm, kubelet

node 节点不需要安装kubectl

cpp 复制代码
yum install -y kubeadm kubelet --disableexclude=kubernetes

启动 kubelet 服务
systemctl enable --now kubelet

2.2 加入集群

通过kubeadm join 命令即可将node节点加入集群

cpp 复制代码
kubeadm join ip:6443 --token xxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxx

ipmaster节点的IP
tokendiscovery-token-ca-cert-hash 都来自master,在master安装好后会有这个。

如果安装好后没有记住可以在master节点使用下面命令获取:

  1. 使用kubeadm命令直接获取(推荐)
cpp 复制代码
kubeadm token create --print-join-command
输出:
kubeadm join xx.xx.xx.xx:6443 --token o05h6j.8a7xnfw56jenhr4f --discovery-token-ca-cert-hash sha256:84d5a6181b2aa49909746a7f6ef955026cce1aa03f98a9985cc7021183a08c6

2. 手动生成

cpp 复制代码
列出所有Token
kubeadm token list , 若没有有效Token,创建新Token

获取Discovery Token CA Cert Hash
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | \
openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | \
awk '{print $2}'

Token默认有效期为24小时,可通过--ttl参数调整,如kubeadm token create --ttl 0设置永不过期(不推荐生产环境使用)。

加入成功:

cpp 复制代码
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

在将Node成功加入集群后,可以在master上通过kubectl get nodes 确认新的node加入了集群:

cpp 复制代码
kubectl get nodes
NAME                    STATUS     ROLES           AGE     VERSION
localhost.localdomain   NotReady   <none>          36m     v1.28.2
node                    NotReady   control-plane   4d12h   v1.28.2

3. 其他

查看容器版本命令:

查看容器镜像标签:

cpp 复制代码
kubectl get pods -n kube-system -o jsonpath='{.items[*].spec.containers[*].image}'

查看某个组件,如etcd的标签

cpp 复制代码
kubectl get pods -n kube-system -l component=etcd -o jsonpath='{.items[*].spec.containers[*].image}'

根据使用的网络插件(如 Calico、Flannel、Cilium)查看其部署的镜像标签:

cpp 复制代码
kubectl get pods -n kube-system -l <network-plugin-selector> -o jsonpath='{.items[*].spec.containers[*].image}'
相关推荐
SimonLiu0099 分钟前
清理HiNas(海纳斯) Docker日志并限制日志大小
java·docker·容器
高峰君主3 小时前
Docker容器持久化
docker·容器·eureka
能来帮帮蒟蒻吗3 小时前
Docker安装(Ubuntu22版)
笔记·学习·spring cloud·docker·容器
言之。7 小时前
别学了,打会王者吧
java·python·mysql·容器·spark·php·html5
秦始皇爱找茬11 小时前
docker部署Jenkins工具
docker·容器·jenkins
hoho不爱喝酒13 小时前
微服务Nacos组件的介绍、安装、使用
微服务·云原生·架构
樽酒ﻬق14 小时前
Kubernetes 常用运维命令整理
运维·容器·kubernetes
Golinie15 小时前
Docker底层原理浅析 | namespace+cgroups+文件系统
docker·容器·文件系统·cgroups·unionfs
樽酒ﻬق15 小时前
深度解析 Kubernetes 配置管理:如何安全使用 ConfigMap 和 Secret
安全·贪心算法·kubernetes
FreeBuf_16 小时前
新型恶意软件采用独特混淆技术劫持Docker镜像
运维·docker·容器