Kubernetes(K8s)作为一个开源的容器编排平台,已经成为现代分布式系统中的标准。在K8s集群中,Master节点扮演着至关重要的角色,它负责集群的调度、资源管理、API访问等核心功能。掌握K8s Master的核心命令对于高效运维容器集群至关重要。本文将详细介绍K8s Master的相关操作,帮助您轻松驾驭容器集群的运维技巧。

一、K8s Master基本概念

K8s Master是集群中的核心节点,负责集群的调度、资源管理、API访问等功能。K8s Master节点通常包括以下组件:

  • API Server:集群的入口点,负责处理集群的HTTP请求,并与其他组件交互。
  • etcd:一个高可用的键值存储,用于存储集群的状态和配置信息。
  • Controller Manager:负责集群的常规操作,如节点监控、Pod副本管理、服务账户管理等。
  • Scheduler:负责将Pod调度到合适的节点上。

二、K8s Master核心命令

2.1 API Server

查看API Server版本

kubectl version -o yaml

查看集群信息

kubectl cluster-info

查看所有命名空间

kubectl get namespaces

查看所有资源类型

kubectl api-resources --output=width=0

2.2 etcd

查看etcd集群信息

etcdctl member list

查看集群状态

etcdctl cluster-health

2.3 Controller Manager

查看所有控制器

kubectl get pods -n kube-system -l k8s-app=controller-manager

查看控制器日志

kubectl logs <controller-manager-pod-name> -n kube-system

2.4 Scheduler

查看所有调度器

kubectl get pods -n kube-system -l k8s-app=kube-scheduler

查看调度器日志

kubectl logs <scheduler-pod-name> -n kube-system

三、集群管理

3.1 查看节点信息

查看所有节点

kubectl get nodes

查看节点详情

kubectl get nodes <node-name> -o yaml

3.2 管理节点

重启节点

kubectl delete node <node-name>

恢复节点

kubectl uncordon <node-name>

3.3 Pod的基本操作

创建Pod

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx

查看Pod

kubectl get pods

删除Pod

kubectl delete pod <pod-name>

3.4 Service操作

创建Service

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

查看Service

kubectl get services

3.5 Deployment的操作

创建Deployment

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

更新和回滚Deployment

kubectl scale deployment <deployment-name> --replicas=3
kubectl rollout undo deployment/<deployment-name>

3.6 使用ConfigMap和Secret

创建ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  nginx.conf: |
    user nginx;
    worker_processes 1;

创建Secret

apiVersion: v1
kind: Secret
metadata:
  name: nginx-secret
type: Opaque
data:
  password: <base64-encoded-password>

3.7 管理Namespaces

创建Namespace

kubectl create namespace my-namespace

查看Namespace

kubectl get namespaces

四、Helm基本操作

Helm是一个Kubernetes的应用包管理工具,可以简化应用程序的部署和管理。

安装Helm

# 安装Helm v3
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

查看所有Charts

helm search repo

安装Chart

helm install <chart-name> <repo-name>

五、Kubernetes日常排错与调试

在日常运维过程中,可能会遇到各种问题。以下是一些常用的排错和调试方法:

  • 查看Pod日志
kubectl logs <pod-name>
  • 查看Pod事件
kubectl get events
  • 查看API Server日志
kubectl logs -n kube-system <api-server-pod-name>

六、小结

掌握K8s Master的核心命令对于高效运维容器集群至关重要。本文介绍了K8s Master的基本概念、核心命令、集群管理、Helm基本操作以及日常排错与调试方法。通过学习和实践这些技巧,您可以轻松驾驭容器集群的运维工作。