安装 kubectl
学习目标
- 了解 kubectl 的作用和重要性
- 掌握在不同操作系统上安装 kubectl
- 学会配置 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
小结
| 要点 | 说明 |
|---|---|
| kubectl | Kubernetes 命令行工具 |
| 功能 | 管理所有 K8s 资源 |
| 配置文件 | ~/.kube/config (kubeconfig) |
| 命令结构 | kubectl [command] [TYPE] [NAME] |
| 基本命令 | get, create, apply, delete, describe |
| 调试命令 | logs, exec, port-forward |
| 配置 | 多集群管理,自动补全 |
练习编辑器
bash
Loading...