Ubuntu环境下管理Kubernetes资源的完整流程
在开始管理Kubernetes前,需确保Ubuntu节点(Master/Worker)满足以下基础要求:
/etc/hosts文件添加节点IP与主机名映射);sudo swapoff -a,并注释/etc/fstab中的swap行;cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf,添加net.bridge.bridge-nf-call-iptables = 1、net.bridge.bridge-nf-call-ip6tables = 1、net.ipv4.ip_forward = 1,然后运行sudo sysctl --system生效;ntpdate并同步时间:sudo apt install -y ntpdate && sudo ntpdate ntp.aliyun.com。在Ubuntu上安装kubelet、kubeadm、kubectl(管理Kubernetes集群的核心工具):
sudo apt update && sudo apt upgrade -y;curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Master节点是集群的控制中心,负责管理节点、Pod调度等核心功能:
sudo swapoff -a;10.244.0.0/16,需与后续网络插件匹配):sudo kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl:将集群配置文件复制到用户目录并设置权限:mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
网络插件是Pod间通信的基础,常用Calico(支持网络策略):
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
部署完成后,可通过kubectl get pods -n kube-system查看插件状态(所有Pod应为Running)。
Worker节点负责运行应用程序容器,通过kubeadm join命令加入集群(需使用Master初始化时输出的命令):
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
加入后,Master节点会自动识别Worker节点,可通过kubectl get nodes查看节点状态(需等待Ready)。
kubectl是Kubernetes的命令行工具,用于与集群交互,常见操作如下:
kubectl get nodes # 查看集群节点状态
kubectl get pods -A # 查看所有命名空间的Pod
kubectl get deployments -n dev # 查看指定命名空间的Deployment
kubectl apply -f app-deployment.yaml # 创建Deployment
kubectl apply -f app-service.yaml # 创建Service
kubectl create deployment nginx --image=nginx --replicas=3 -n dev
kubectl expose deployment nginx --port=80 --type=NodePort -n dev
kubectl delete pod nginx-pod -n dev # 删除指定Pod
kubectl delete deployment nginx -n dev # 删除指定Deployment
kubectl delete namespace dev # 删除命名空间(会连带删除其下所有资源)
kubectl patch pod ubuntu-pod -n dev -p '{"spec":{"containers":[{"name":"ubuntu-container","resources":{"requests":{"memory":"256Mi"},"limits":{"memory":"512Mi"}}}]}}'
apiVersion: v1
kind: LimitRange
metadata:
name: default-limits
namespace: dev
spec:
limits:
- type: Container
default:
requests.cpu: "200m"
requests.memory: "128Mi"
defaultRequest:
requests.cpu: "100m"
requests.memory: "64Mi"
max:
requests.cpu: "1"
requests.memory: "512Mi"
min:
requests.cpu: "50m"
requests.memory: "32Mi"
ResourceQuota控制命名空间的总资源边界(如CPU、内存总量):apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-quota
namespace: dev
spec:
hard:
requests.cpu: "4"
requests.memory: "8Gi"
limits.cpu: "8"
limits.memory: "16Gi"
kubectl logs <pod-name> -n dev # 查看Pod的日志
kubectl logs <pod-name> -n dev -c <container-name> # 查看指定容器的日志
kubectl exec -it <pod-name> -n dev -- /bin/bash # 进入Pod的交互式Shell
kubectl describe pod <pod-name> -n dev # 查看Pod的详细信息(包括事件、容器状态)
sudo snap install k9s
k9s # 启动工具
.deb包安装,通过kubectl port-forward或Ingress暴露服务后访问。kubectl top命令):kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
通过以上步骤,可在Ubuntu系统上实现Kubernetes集群资源的精细化管控,确保集群稳定运行并提升资源利用率。