Kubernetes节点在Ubuntu上的管理指南
在Ubuntu上管理Kubernetes节点(包括Master和Worker)需完成环境准备、集群搭建、节点管理、资源操作及维护监控等步骤,以下是详细流程:
系统更新与基础配置
更新系统包并升级到最新版本,确保内核及依赖项兼容:
sudo apt update && sudo apt upgrade -y
sudo swapoff -a # 临时禁用
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久禁用(注释swap行)
/etc/sysctl.d/k8s.conf文件,添加以下内容以启用IP转发和网络插件所需功能:net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
执行sudo sysctl --system使配置生效。overlay和br_netfilter模块(永久加载需添加到/etc/modules):sudo modprobe overlay
sudo modprobe br_netfilter
安装容器运行时(Docker)
Kubernetes依赖容器运行时管理容器,Ubuntu上推荐使用Docker:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce
sudo systemctl enable --now docker # 开机自启
安装Kubernetes核心组件
安装kubelet(节点代理)、kubeadm(集群初始化工具)、kubectl(命令行工具):
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本,避免自动升级
初始化Master节点
使用kubeadm初始化集群,指定Pod网络CIDR(需与后续网络插件匹配,如Calico的10.244.0.0/16):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,终端会输出kubeadm join命令(包含Token和CA证书哈希),需保存备用(用于Worker节点加入集群)。
配置kubectl
将集群配置文件复制到用户目录,使当前用户具备集群访问权限:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证配置是否成功:
kubectl version # 应显示客户端与服务端版本信息
部署网络插件
Kubernetes需要网络插件实现Pod间通信,常用Calico(高性能、支持网络策略):
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
部署完成后,等待插件状态变为Running。
添加Worker节点
在Worker节点上执行Master节点初始化时输出的kubeadm join命令(替换为实际IP、Token和哈希值):
sudo kubeadm join <Master-IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
执行后,Master节点会自动识别该Worker节点。
验证节点状态
在Master节点上运行以下命令,查看所有节点的状态(Ready表示节点已加入集群并可正常工作):
kubectl get nodes
移除节点
kubectl drain <节点名称> --ignore-daemonsets # 排空节点上的Pod
kubectl delete node <节点名称>
sudo kubeadm reset
sudo rm -rf /etc/kubernetes /var/lib/kubelet
sudo systemctl restart docker
基础资源操作
kubectl get nodeskubectl get pods -Akubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
高级资源管理
kubectl apply -f deployment.yaml # 创建/更新资源
kubectl delete -f deployment.yaml # 删除资源
kubectl logs <Pod名称> # 查看Pod日志
kubectl describe pod <Pod名称> # 查看Pod详情
命令行增强工具
sudo snap install k9s
Web UI工具
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
访问方式:通过kubectl proxy启动代理,在浏览器访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/(需配置Token认证)。kubectl apply -f https://raw.githubusercontent.com/portainer/portainer-kubernetes/master/deploy/portainer.yaml
访问方式:通过kubectl port-forward或Ingress暴露服务,在浏览器访问http://<Node-IP>:9000。监控集群状态
kubectl top命令(查看节点/Pod资源使用率):kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
日志管理
loki-stack后通过Grafana查看日志。故障排除
kubectl apply -f https://github.com/bitnami-labs/kubewatch/releases/latest/download/kubewatch.yaml
curl -LO https://github.com/vmware-tanzu/sonobuoy/releases/latest/download/sonobuoy_0.56.10_linux_amd64.tar.gz
tar -xzf sonobuoy_*.tar.gz
./sonobuoy run # 运行测试
./sonobuoy retrieve # 获取测试结果
通过以上步骤,可在Ubuntu上完成Kubernetes节点的部署、管理与维护,满足容器化应用的运行需求。需注意定期更新Kubernetes组件及系统补丁,确保集群安全稳定。