Kubernetes的命令行工具, kubectl, 允许你在Kubernetes集群中运行命令. 你可以用kubectl来部署应用, 检查和管理集群资源, 并查看日志。有关更多信息,包括 kubectl的全部命令完整列表, 查看 kubectl
reference documentation.
kubectl 可安装在各种 Linux 平台、macOS 和 Windows 上。在下面找到您喜欢的操作系统。
kind
让您可以在本地计算机上运行 Kubernetes.该工具要求您安装了 Docker 或 Podman .
kind的 Quick Start 页面向您显示了启动并运行 kind 需要执行的操作。
View kind Quick Start Guide
与“kind”一样,“minikube” 是一个可让您在本地运行 Kubernetes 的工具。 minikube
在您的个人计算机(包括 Windows、macOS 和 Linux PC)上运行一体化或多节点本地 Kubernetes 集群,以便您可以试用 Kubernetes,或进行日常开发工作。
如果您的重点是安装该工具,则可以按照官方的入门! 指南进行操作。
View minikube Get Started! Guide
一旦“minikube”正常工作,您就可以使用它来运行示例应用程序。
您可以使用 kubeadm 工具来创建和管理 Kubernetes 集群。它执行必要的操作,以用户友好的方式启动并运行最小可行的安全集群。
安装 kubeadm 向您展示如何安装 kubeadm。安装后,您可以使用它来创建集群。
View kubeadm Install Guide
先看下aliyun为中国大陆提供的minikube本土化使用文章
Minikube - Kubernetes本地实验环境-阿里云开发者社区
cpu_x86
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
测试以确保您安装的版本是最新的
kubectl version --client
为了让 kubectl 找到并访问 Kubernetes 集群,它需要一个 kubeconfig 文件,该文件是在您使用 kube-up.sh 创建集群或成功部署 Minikube 集群时自动创建的。默认情况下,kubectl 配置位于 ~/.kube/config。
通过获取集群状态来检查 kubectl 是否已正确配置:
kubectl 集群信息
如果您看到 URL 响应,则说明 kubectl 已正确配置为访问您的集群。
如果您看到类似以下内容的消息,则 kubectl 未正确配置或无法连接到 Kubernetes 集群。
与服务器 <服务器名称:端口> 的连接被拒绝 - 您指定了正确的主机或端口吗?
例如,如果您打算在笔记本电脑上(本地)运行 Kubernetes 集群,则需要先安装 Minikube 等工具,然后重新运行上述命令。
如果 kubectl cluster-info 返回 url 响应,但您无法访问集群,请使用以下命令检查其配置是否正确:
kubectl 集群信息转储
minikube 是本地 Kubernetes,专注于让 Kubernetes 易于学习和开发。
您所需要的只是 Docker(或类似兼容的)容器或虚拟机环境,而 Kubernetes 只需一个命令即可:“minikube start”
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb
从具有管理员访问权限的终端(但未以 root 身份登录),运行:
minikube start
试图运行时报错:
按照建议运行,以为当前用户增加docker访问权限:
sudo usermod -aG docker $USER && newgrp docker
成功:
这边有报错镜像找不到:
报错超时:
报错ip地址有两行,似乎是使用代理的问题。可以尝试删去阿里云docker代理:
尝试生成日志:
export HTTP_PROXY=http://<proxy hostname:port>
export HTTPS_PROXY=https://<proxy hostname:port>
export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24
minikube start
建议设置代理使用minikube
minikube stop
minikube delete
听上去很蠢,但是指定kubernetes版本降级后它成功运行了
minikube start --image-mirror-country='cn' --registry-mirror=你的阿里云镜像 --kubernetes-version=v1.23.8
成功输出如:
minikube dashboard
然而报错:
consider@consider-Dell-G15-5511:~$ minikube dashboard
正在验证 dashboard 运行情况 ...
正在启动代理...
正在验证 proxy 运行状况 ...
❌ 因 SVC_URL_TIMEOUT 错误而退出:http://127.0.0.1:33619/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ 不可访问:Temporary Error: unexpected response code: 503
此处运行排查问题
kubectl get pods --all-namespaces
consider@consider-Dell-G15-5511:~$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-65c54cc984-5vs9p 1/1 Running 0 37m
kube-system etcd-minikube 1/1 Running 0 37m
kube-system kube-apiserver-minikube 1/1 Running 0 37m
kube-system kube-controller-manager-minikube 1/1 Running 0 37m
kube-system kube-proxy-7qgmq 1/1 Running 0 37m
kube-system kube-scheduler-minikube 1/1 Running 0 37m
kube-system storage-provisioner 1/1 Running 0 37m
kubernetes-dashboard dashboard-metrics-scraper-7db978b848-cjq2q 1/1 Running 0 37m
kubernetes-dashboard kubernetes-dashboard-6f4c897964-gzmwn 0/1 ImagePullBackOff 0 37m
可以看到是这个节点问题,报镜像拉取错误
kubernetes-dashboard kubernetes-dashboard-6f4c897964-gzmwn
检查一下节点日志
consider@consider-Dell-G15-5511:~$ kubectl describe --namespace=kubernetes-dashboard po kubernetes-dashboard-6f4c897964-gzmwn
Name: kubernetes-dashboard-6f4c897964-gzmwn
Namespace: kubernetes-dashboard
Priority: 0
Service Account: kubernetes-dashboard
Node: minikube/192.168.49.2
Start Time: Mon, 02 Oct 2023 18:07:57 +0800
Labels: gcp-auth-skip-secret=true
k8s-app=kubernetes-dashboard
pod-template-hash=6f4c897964
Annotations:
Status: Pending
IP: 172.17.0.3
IPs:
IP: 172.17.0.3
Controlled By: ReplicaSet/kubernetes-dashboard-6f4c897964
Containers:
kubernetes-dashboard:
Container ID:
Image: docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93
Image ID:
Port: 9090/TCP
Host Port: 0/TCP
Args:
--namespace=kubernetes-dashboard
--enable-skip-login
--disable-settings-authorizer
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Liveness: http-get http://:9090/ delay=30s timeout=30s period=10s #success=1 #failure=3
Environment:
Mounts:
/tmp from tmp-volume (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-t4grc (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
tmp-volume:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit:
kube-api-access-t4grc:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional:
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: kubernetes.io/os=linux
Tolerations: node-role.kubernetes.io/master:NoSchedule
node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 38m default-scheduler Successfully assigned kubernetes-dashboard/kubernetes-dashboard-6f4c897964-gzmwn to minikube
Warning Failed 16m (x4 over 32m) kubelet Error: ErrImagePull
Warning Failed 15m (x8 over 32m) kubelet Error: ImagePullBackOff
Normal BackOff 15m (x9 over 32m) kubelet Back-off pulling image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93"
Warning Failed 10m (x5 over 32m) kubelet Failed to pull image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93": rpc error: code = Unknown desc = context canceled
Normal Pulling 7m42s (x6 over 38m) kubelet Pulling image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93"
我们需要进入到控制台中手动拉取镜像,具体来说
minikube ssh
因为是拉取这个镜像报错,我们手动pull并重新打标签
docker.io/kubernetesui/dashboard:v2.7.0
我这边拉不下来所以手工上穿镜像再拉