插件窝 干货文章 如何在Linux系统中使用Kubernetes容器编排

如何在Linux系统中使用Kubernetes容器编排

kubectl Kubernetes sudo nginx 347    来源:    2025-04-18

在Linux系统中使用Kubernetes容器编排指南

1. Kubernetes简介

Kubernetes (简称K8s) 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了容器编排、服务发现、负载均衡、自动扩缩容等功能。

2. 安装准备

2.1 系统要求

  • Linux系统 (推荐Ubuntu 18.04+/CentOS 7+)
  • 2GB以上内存
  • 2核以上CPU
  • 禁用swap分区
  • 网络连接

2.2 安装Docker

Kubernetes需要容器运行时,推荐安装Docker:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker

# CentOS/RHEL
sudo yum install -y docker
sudo systemctl enable docker
sudo systemctl start docker

3. 安装Kubernetes

3.1 安装kubeadm, kubelet和kubectl

# 添加Kubernetes apt仓库
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

# 安装组件
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# CentOS/RHEL
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet

3.2 初始化Kubernetes集群

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

3.3 安装网络插件(以Flannel为例)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4. 基本使用

4.1 查看集群状态

kubectl cluster-info
kubectl get nodes

4.2 部署应用

# 部署nginx示例
kubectl create deployment nginx --image=nginx

# 查看部署
kubectl get deployments
kubectl get pods

# 暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort

# 查看服务
kubectl get services

4.3 扩展应用

# 扩展到3个副本
kubectl scale deployment nginx --replicas=3

# 查看pod分布
kubectl get pods -o wide

5. 高级功能

5.1 使用YAML文件管理资源

创建nginx-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

应用配置:

kubectl apply -f nginx-deployment.yaml

5.2 使用命名空间

# 创建命名空间
kubectl create namespace dev

# 在特定命名空间中部署应用
kubectl create deployment nginx --image=nginx -n dev

# 查看特定命名空间资源
kubectl get all -n dev

5.3 持久化存储

创建PVC (PersistentVolumeClaim):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

6. 维护与监控

6.1 查看日志

kubectl logs <pod-name>
kubectl logs -f <pod-name> # 实时日志

6.2 监控资源使用

kubectl top nodes
kubectl top pods

6.3 安装Dashboard (可选)

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

# 创建访问令牌
kubectl create serviceaccount dashboard-admin-sa
kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa
kubectl get secret $(kubectl get serviceaccount dashboard-admin-sa -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode

# 访问Dashboard
kubectl proxy
# 然后在浏览器访问: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

7. 常见问题解决

  1. 节点NotReady状态:

    • 检查网络插件是否安装
    • 检查kubelet服务状态: systemctl status kubelet
  2. Pod一直处于Pending状态:

    • 检查资源是否足够: kubectl describe pod <pod-name>
    • 检查是否有可用的节点
  3. 镜像拉取失败:

    • 检查镜像名称是否正确
    • 检查网络连接
    • 如有私有仓库,配置imagePullSecrets
  4. kubectl命令无响应:

    • 检查kube-apiserver是否运行: kubectl get componentstatuses
    • 检查~/.kube/config配置是否正确

通过以上步骤,您应该能够在Linux系统上成功安装和使用Kubernetes进行容器编排。随着对Kubernetes的熟悉,您可以进一步探索更高级的功能如Helm包管理、StatefulSets、Operators等。