如何利用Ubuntu管理Kubernetes
导读:如何在Ubuntu上管理Kubernetes集群 1. 准备Ubuntu节点环境 在开始管理Kubernetes前,需确保Ubuntu节点(Master/Worker)满足以下基础要求: 系统要求:推荐使用Ubuntu 20.04 LTS...
如何在Ubuntu上管理Kubernetes集群
1. 准备Ubuntu节点环境
在开始管理Kubernetes前,需确保Ubuntu节点(Master/Worker)满足以下基础要求:
- 系统要求:推荐使用Ubuntu 20.04 LTS及以上版本(内核版本≥4.19);
- 网络配置:所有节点需配置静态IP,且能通过主机名互相访问(编辑
/etc/hosts
文件添加节点IP与主机名映射); - 系统优化:
- 关闭交换分区(Kubernetes要求):
sudo swapoff -a
,并注释/etc/fstab
中的swap行; - 开启IPv4转发:执行
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
。
- 关闭交换分区(Kubernetes要求):
2. 安装Docker容器运行时
Kubernetes依赖容器运行时管理容器,Ubuntu上常用Docker:
- 添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
; - 添加Docker仓库:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
; - 安装Docker:
sudo apt update & & sudo apt install -y docker-ce docker-ce-cli containerd.io
; - 启动Docker并设置开机自启:
sudo systemctl start docker & & sudo systemctl enable docker
。
3. 安装Kubernetes核心组件
在所有节点上安装kubelet
、kubeadm
、kubectl
(用于集群管理和命令行操作):
- 添加Kubernetes官方仓库:
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
。
4. 初始化Master节点
Master节点是集群的控制平面,负责调度、管理集群状态:
- 执行初始化命令(以Calico网络插件为例,需指定Pod网络CIDR):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
; - 初始化完成后,记录输出的
kubeadm join
命令(用于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
。
5. 部署网络插件
Kubernetes需要网络插件实现Pod间通信,常用插件及部署方式:
- Calico(推荐,支持网络策略):
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
; - Flannel(轻量级,适合简单场景):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
。
部署完成后,检查插件Pod状态:kubectl get pods -n kube-system
(所有Pod应为Running
)。
6. 加入Worker节点
Worker节点负责运行应用程序容器,通过kubeadm join
命令加入集群(需使用Master初始化时输出的命令):
- 示例:
sudo kubeadm join 192.168.1.100:6443 --token < token> --discovery-token-ca-cert-hash sha256:< hash>
(替换为实际的IP、Token和哈希值)。
加入后,Master节点会自动识别Worker节点,可通过kubectl get nodes
查看节点状态(需等待Ready
)。
7. 使用工具管理Kubernetes集群
命令行工具(kubectl)
- 基础操作:
- 查看节点:
kubectl get nodes
; - 查看Pod:
kubectl get pods -A
(-A
表示所有命名空间); - 部署应用:
kubectl create deployment nginx --image=nginx
; - 暴露服务:
kubectl expose deployment nginx --port=80 --type=NodePort
; - 查看日志:
kubectl logs < pod-name>
。
- 查看节点:
- 增强体验:
- 使用
K9s
(TUI工具):sudo snap install k9s
,提供可视化界面管理集群; - 使用
Lens
(GUI工具):下载.deb
包安装,支持集群监控、日志分析、资源编辑等功能。
- 使用
可视化工具
- Kubernetes Dashboard(官方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认证)。
- 安装:
- Portainer(跨平台管理):
- 安装:
kubectl apply -f https://raw.githubusercontent.com/portainer/portainer-kubernetes/master/deploy/portainer.yaml
; - 访问:通过
kubectl port-forward
或Ingress暴露服务,然后在浏览器访问http://< node-ip> :9000
。
- 安装:
8. 监控与维护集群
- 监控:
- 使用
Prometheus
+Grafana
:部署Prometheus Operator(kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/master/bundle.yaml
),然后导入Grafana Dashboard(如Kubernetes Cluster Monitoring); - 使用
Metrics Server
(轻量级监控):kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
,支持kubectl top
命令。
- 使用
- 日志:
- 使用
Fluentd
+Elasticsearch
+Kibana
(EFK栈):部署Fluentd作为日志收集器,将日志发送到Elasticsearch,通过Kibana可视化; - 使用
Loki
(轻量级日志):helm repo add grafana https://grafana.github.io/helm-charts & & helm install loki grafana/loki-stack
,配合Grafana查看日志。
- 使用
- 故障排除:
- 使用
Kubewatch
(事件通知):kubectl apply -f https://github.com/bitnami-labs/kubewatch/releases/latest/download/kubewatch.yaml
,配置通知(如Slack、Email); - 使用
Sonobuoy
(集群测试):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
,生成集群状态报告。
- 使用
通过以上步骤,可在Ubuntu上完成Kubernetes集群的部署、配置及管理,满足日常运维需求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何利用Ubuntu管理Kubernetes
本文地址: https://pptw.com/jishu/720025.html