7·基础入门入门

安装 kubectl

kuberneteskubectlinstallation

安装 kubectl

学习目标

  1. 了解 kubectl 的作用和重要性
  2. 掌握在不同操作系统上安装 kubectl
  3. 学会配置 kubectl 连接集群

核心概念

kubectl 是什么

定义:
• Kubernetes 命令行工具
• 与集群交互的主要方式
• 管理所有 K8s 资源

功能:
┌─────────────────────────────────────┐
│  kubectl                            │
│  • 部署应用                         │
│  • 查看资源                         │
│  • 扩缩容                          │
│  • 更新和回滚                       │
│  • 查看日志                         │
│  • 执行命令                         │
└─────────────────────────────────────┘

发音:
• "kube-control"
• "kube-c-t-l"
• "kubectl"

kubectl 架构

工作原理:
┌─────────────────────────────────────┐
│  kubectl                            │
│      ↓                              │
│  读取 kubeconfig                    │
│      ↓                              │
│  构建 API 请求                      │
│      ↓                              │
│  发送到 API Server                  │
│      ↓                              │
│  接收并格式化响应                   │
└─────────────────────────────────────┘

kubeconfig 文件:
• 包含集群信息
• 包含用户凭证
• 包含上下文配置
• 默认位置: ~/.kube/config

命令结构

kubectl [command] [TYPE] [NAME] [flags]

command:
• get - 获取资源
• create - 创建资源
• apply - 应用配置
• delete - 删除资源
• describe - 查看详情
• logs - 查看日志
• exec - 执行命令
• port-forward - 端口转发

TYPE:
• pod, pods, po
• deployment, deployments, deploy
• service, services, svc
• namespace, namespaces, ns
• node, nodes, no

示例:
kubectl get pods
kubectl get pods -n kube-system
kubectl describe pod my-pod
kubectl logs my-pod

实践练习

练习 1:安装 kubectl

macOS 安装

# 方法 1: Homebrew (推荐)
brew install kubectl

# 方法 2: 直接下载
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# 方法 3: MacPorts
sudo port install kubectl

Linux 安装

# 方法 1: 直接下载
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# 方法 2: Debian/Ubuntu
sudo apt-get update
sudo apt-get install -y kubectl

# 方法 3: Red Hat/CentOS
sudo yum install -y kubectl

Windows 安装

# 方法 1: Chocolatey
choco install kubernetes-cli

# 方法 2: 直接下载
curl -LO "https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe"

# 方法 3: PowerShell
Install-Script -Name install-kubectl -Scope CurrentUser -Force
install-kubectl.ps1 -DownloadLocation C:\kubectl

练习 2:验证安装

# 检查版本
kubectl version --client

# 检查配置
kubectl config view

# 测试连接
kubectl cluster-info
kubectl get nodes

练习 3:配置集群连接

# 使用 Minikube 自动配置
minikube start
# kubectl 自动配置完成

# 手动配置 kubeconfig
# 编辑 ~/.kube/config
apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://192.168.1.100:6443
    certificate-authority-data: <CA_DATA>
  name: my-cluster
contexts:
- context:
    cluster: my-cluster
    user: my-user
  name: my-context
current-context: my-context
users:
- name: my-user
  user:
    client-certificate-data: <CERT_DATA>
    client-key-data: <KEY_DATA>

练习 4:基本命令

# 查看所有资源类型
kubectl api-resources

# 查看资源
kubectl get pods
kubectl get pods -A                    # 所有命名空间
kubectl get pods -n kube-system        # 指定命名空间
kubectl get pods -o wide               # 详细信息
kubectl get pods -o yaml               # YAML 格式
kubectl get pods -l app=nginx          # 标签过滤

# 创建资源
kubectl create deployment nginx --image=nginx
kubectl create namespace development

# 应用配置
kubectl apply -f pod.yaml
kubectl apply -f deployment.yaml

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

# 查看详情
kubectl describe pod my-pod
kubectl describe service my-service

# 查看日志
kubectl logs my-pod
kubectl logs -f my-pod                 # 持续输出
kubectl logs my-pod -c my-container   # 多容器 Pod

# 执行命令
kubectl exec -it my-pod -- /bin/bash
kubectl exec my-pod -- ls /app

# 端口转发
kubectl port-forward pod/my-pod 8080:80
kubectl port-forward service/my-service 8080:80

练习 5:配置别名

# 添加到 ~/.bashrc 或 ~/.zshrc
alias k=kubectl
alias kgp='kubectl get pods'
alias kgs='kubectl get services'
alias kgd='kubectl get deployments'
alias kgn='kubectl get namespaces'
alias kd='kubectl describe'
alias kl='kubectl logs'
alias kex='kubectl exec -it'

# 使用别名
k get pods
kgp
kgs

练习 6:启用自动补全

# Bash
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

# Zsh
source <(kubectl completion zsh)
echo "source <(kubectl completion zsh)" >> ~/.zshrc

# 使用 kubectl 时按 Tab 补全
kubectl get p<TAB>     # 补全为 pods
kubectl get pods <TAB> # 补全 Pod 名称

练习 7:多集群管理

# 查看上下文
kubectl config get-contexts

# 切换上下文
kubectl config use-context minikube
kubectl config use-context production

# 设置默认命名空间
kubectl config set-context --current --namespace=development

# 查看当前上下文
kubectl config current-context

常见问题

1. 连接失败

问题:Unable to connect to the server
解决:
• 检查集群是否运行
• 检查 kubeconfig 配置
• 检查网络连接
• 检查防火墙设置

2. 权限不足

问题:Forbidden (RBAC)
解决:
• 检查用户权限
• 联系集群管理员
• 使用正确的凭证

3. 命令未找到

问题:kubectl: command not found
解决:
• 检查安装路径
• 检查 PATH 环境变量
• 重新安装 kubectl

验证安装

# 完整验证
kubectl version --client
kubectl cluster-info
kubectl get nodes
kubectl get pods -A

# 预期输出:
# Client Version: version.Info{Major:"1", Minor:"28", ...}
# Kubernetes control plane is running at https://192.168.49.2:8443
# NAME       STATUS   ROLES           AGE   VERSION
# minikube   Ready    control-plane   5m    v1.28.0

小结

要点说明
kubectlKubernetes 命令行工具
功能管理所有 K8s 资源
配置文件~/.kube/config (kubeconfig)
命令结构kubectl [command] [TYPE] [NAME]
基本命令get, create, apply, delete, describe
调试命令logs, exec, port-forward
配置多集群管理,自动补全

练习编辑器

bash
Loading...

继续学习

完成本课后,建议继续学习下一课「创建第一个集群」 以巩固所学知识。