mac安装kubernetes并运行echoserver

上次虽然写了两篇在mac装kubernetes的,但是仅仅限于初步安装,这次再补上跑个demo,正好也赶上阿里云有相关镜像,于是这里再次记录下。

安装minikube

curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.15.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

安装kubectl

curl -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/v1.5.1/bin/darwin/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

启动

minikube start
kubectl run hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google-container/echoserver:1.4 --port=8080
kubectl expose deployment hello-minikube --type=NodePort
kubectl get pod

问题

pod的status都在ContainerCreating,查看

kubectl describe pods

出错部分log

Events:
  FirstSeen    LastSeen    Count    From            SubobjectPath    Type        Reason        Message
  ---------    --------    -----    ----            -------------    --------    ------        -------
  8m        8m        1    {default-scheduler }            Normal        Scheduled    Successfully assigned hello-minikube-957602326-t9mzf to minikube
  6m        3m        2    {kubelet minikube}            Warning        FailedSync    Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/google_containers/pause-amd64:3.0, this may be because there are no credentials on this request.  details: (Error response from daemon: Get https://gcr.io/v1/_ping: dial tcp 64.233.187.82:443: i/o timeout)"

  6m    1m    10    {kubelet minikube}        Warning    FailedSync    Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\""

解决问题

参考k8s初游: minikube启动docker镜像这篇文章的方法,这里我们用阿里的镜像

minikube ssh
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0

删除pod再观察下

kubectl delete pods xxxx
kubectl get pod --all-namespaces

这下变成running了

NAME                             READY     STATUS    RESTARTS   AGE
hello-minikube-957602326-gf17s   1/1       Running   0          40s

跑下demo

curl $(minikube service hello-minikube --url)

输出

CLIENT VALUES:
client_address=172.17.0.1
command=GET
real path=/
query=nil
request_version=1.1
request_uri=http://192.168.99.101:8080/

SERVER VALUES:
server_version=nginx: 1.10.0 - lua: 10001

HEADERS RECEIVED:
accept=*/*
host=192.168.99.101:31860
user-agent=curl/7.43.0
BODY:

解决kube-addon-manager-minikube的ImagePullBackOff问题

查看详情

kubectl describe --namespace=kube-system po kube-addon-manager-minikube

发现拉取gcr.io/google-containers/kube-addon-manager:v6.1失败,使用阿里云的镜像fix一下

minikube ssh
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/kube-addon-manager-amd64:v6.1
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/kube-addon-manager-amd64:v6.1 gcr.io/google-containers/kube-addon-manager:v6.1

使用

kubectl get pods --all-namespaces

正常了

NAMESPACE     NAME                             READY     STATUS    RESTARTS   AGE
default       hello-minikube-957602326-gf17s   1/1       Running   1          44m
kube-system   kube-addon-manager-minikube      1/1       Running   0          55m

minikube dashboard

kubectl get pod --all-namespaces
NAMESPACE     NAME                             READY     STATUS              RESTARTS   AGE
default       hello-minikube-957602326-gf17s   1/1       Running             1          47m
kube-system   kube-addon-manager-minikube      1/1       Running             0          58m
kube-system   kube-dns-v20-m9p7t               0/3       ContainerCreating   0          2m
kube-system   kubernetes-dashboard-k6z7w       0/1       ImagePullBackOff    0          2m

查看下

kubectl describe --namespace=kube-system po kube-dns-v20-m9p7t 

fix

minikube ssh
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/kubedns-amd64:1.9
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/kubedns-amd64:1.9 gcr.io/google_containers/kubedns-amd64:1.9

docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/kube-dnsmasq-amd64:1.4
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/kube-dnsmasq-amd64:1.4 gcr.io/google_containers/kube-dnsmasq-amd64:1.4

docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/exechealthz-amd64:1.2
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/exechealthz-amd64:1.2 gcr.io/google_containers/exechealthz-amd64:1.2

fix

kubectl describe --namespace=kube-system po kubernetes-dashboard-k6z7w
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.5.0
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.5.0 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1

最后再次打开dashboard

minikube dashboard

看到久违的界面了
图片描述

doc


code-craft
spring boot , docker and so on 欢迎关注微信公众号: geek_luandun

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很...

11.8k 声望
2k 粉丝
0 条评论
推荐阅读
mac使用podman替代docker
序本文主要记录一下使用podman替代docker的过程安装podman {代码...} 或者去[链接]下载对应的pkgpodman compose {代码...} 或者 {代码...} 使用machine {代码...} init添加-v来挂载宿主机的文件夹到machinecompos...

codecraft1阅读 270

Helm3-安装RabbitMQ
最近在使用k8s搭建微服务时,发现需要手动修改yaml文件里面的pod name、pod image、svc name、ingress tls等等,非常麻烦,但是有了helm之后情况就不一样了,helm是k8s的包管理器,类似ubuntu的apt-get,centos的...

Awbeci阅读 9.6k

Kubernetes Gateway API 深入解读和落地指南
Kubernetes Gateway API 是 Kubernetes 1.18 版本引入的一种新的 API 规范,是 Kubernetes 官方正在开发的新的 API,Ingress 是 Kubernetes 已有的 API。Gateway API 会成为 Ingress 的下一代替代方案。Gateway A...

Rainbond2阅读 456

Jvm调优与微服务资源分配
在没有接触微服务之前,我们的java程序一般都部署在WebLogic、Tomcat这类应用服务器上,这些应用服务器本身也是基于Jvm虚拟机的。一般我们统一对应用服务器做Jvm参数调优(分配多大内存,线程池限制等),而不用...

KerryWu阅读 6.1k

K8S-使用Helm安装RabbitMQ和Redis的总结
记得去年2021上半年的时候自学了k8s并且使用helm安装了rabbitmq和redis,可以在开发、测试和生产环境上用起来,但是下半年之后就没有用,再拾起来的时候发现好多知识点都忘了,这篇文章就是总结使用helm安装rabbm...

Awbeci1阅读 1.9k

Kubernetes v1.27 新特性一览
Kubernetes v1.27 是 2023 年的第一个大版本更新,包含了近 60 项主要的更新。 而 1.26 只有 37 项,所以这个版本可以说是一个变化非常显著的版本了。

张晋涛1阅读 1.1k

封面图
实战:用“廉价”的NFS作为K8S后端存储
大家都知道,NFS是一种基于网络的文件系统协议,允许在不同的机器之间共享文件系统资源。在K8S中,可以使用NFS作为后端存储,以提供持久化存储和共享存储卷。但是否适合在生产环境使用NFS作为后端存储,这取决于...

不背锅运维2阅读 770

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很...

11.8k 声望
2k 粉丝
宣传栏