← 返回首页
☸️

Kubernetes基础入门

📂 devops ⏱ 2 min 278 words

Kubernetes基础入门

什么是Kubernetes

Kubernetes(K8s)是一个开源的容器编排平台,用于自动化容器化应用的部署、扩展和管理。

核心架构

Master节点:
├── kube-apiserver        # API服务器
├── etcd                 # 数据存储
├── kube-scheduler       # 调度器
└── kube-controller-manager  # 控制管理器

Worker节点:
├── kubelet              # 节点代理
├── kube-proxy           # 网络代理
└── 容器运行时(Docker/containerd)

核心概念

Pod

Pod是最小的部署单元,包含一个或多个容器。

apiVersion: v1
kind: Pod
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  containers:
    - name: myapp
      image: nginx:latest
      ports:
        - containerPort: 80

Deployment

Deployment管理Pod的副本集。

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

Service

Service提供Pod的网络访问。

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
spec:
  selector:
    app: myapp
  ports:
    - port: 80
      targetPort: 80
  type: ClusterIP

Service类型

类型 说明
ClusterIP 集群内部访问
NodePort 通过节点端口访问
LoadBalancer 云平台负载均衡
ExternalName 外部服务映射

安装Kubernetes

使用Minikube

# 安装Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 启动集群
minikube start

# 查看状态
minikube status

使用kubeadm

# 安装kubeadm
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

# 初始化集群
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

kubectl基础命令

# 查看资源
kubectl get pods
kubectl get svc
kubectl get deployments
kubectl get nodes

# 查看详情
kubectl describe pod pod_name
kubectl describe node node_name

# 创建资源
kubectl apply -f manifest.yaml
kubectl create -f manifest.yaml

# 删除资源
kubectl delete -f manifest.yaml
kubectl delete pod pod_name

# 进入容器
kubectl exec -it pod_name -- /bin/bash

# 查看日志
kubectl logs pod_name
kubectl logs -f pod_name

实践:部署应用

# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:alpine
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80
  type: LoadBalancer
# 部署应用
kubectl apply -f nginx-deployment.yaml

# 查看部署状态
kubectl get pods -w

# 访问服务
minikube service nginx-svc

总结

Kubernetes是云原生时代的容器编排标准。掌握其核心概念和基本操作,是学习云原生架构的基础。