发布时间:2020-02-23 12:40:51编辑:admin阅读(3025)
microk8s不通过虚拟机但与主机隔离方式,快速轻巧安装Kubernetes。通过在单个快照包中打包Kubernetes,Docker.io,iptables和CNI的所有上游二进制文件来实现此隔离。 snap包是一个应用程序容器 - 您可以将其想象为Docker容器的轻量级版本。它使用了许多相同的底层技术进行隔离,而没有网络隔离的所有开销。最终结果是一种超越任何一个发行版的包格式,因为快照可以安装在大多数Linux操作系统上,同时还利用原子更新,升级失败回滚以及来自用户主机的软件限制级别等功能。
microk8s可以说是minikube在Linux平台上的一个替代品。
配置 | 操作系统 | ip地址 |
1核2G | ubuntu-16.04.5-server-amd64 | 192.168.0.162 |
通过 microk8s 可以非常快速的搭建起一个 Kubernetes 单机环境,安装极其非常方便,通过 snap
命令一键安装:
ubuntu 自带 snap 命令,可以直接执行,centos 需要先安装 snap。
apt-get -y docker.io apt-get clean all
注意:microk8s依赖于docker,否则执行microk8s命令,会卡顿,甚至报错!
sudo snap install microk8s --classic --channel=1.12/stable # 如需卸载,使用命令: # sudo snap remove microk8s
注意:安装最新版本,使用命令:sudo snap install microk8s --classic
但是这里并没有安装最新版本,为什么呢?因为新版没有microk8s.docker命令。
如果没有这个命令。必须使用代理方式,下载镜像!
下文,会提到,如何使用microk8s.docker命令,来避免访问gfw问题。
// 1. 启动 microk8s.start // 2. 关闭 microk8s.stop // 3. kubectl 操作 // --- 查看 cluster microk8s.kubectl cluster-info // --- 查看 nodes microk8s.kubectl get nodes // --- 查看 pods microk8s.kubectl get pods // 4. docker 操作 microk8s.docker ps microk8s.docker images
可以看到,在 microk8s 环境中执行 kubectl 时,需要在 kubectl 命令前添加前缀 microk8s.
为了方便,可以为 microk8s.kubectl
添加一个 别名:
snap alias microk8s.kubectl kubectl
echo "source <(kubectl completion bash)" >> ~/.bashrc source ~/.bashrc
microk8s.stop microk8s.start microk8s.status
microk8s.enable dns
查看dns运行状态
root@ubuntu:~# kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE kube-dns-67b548dcff-75hgc 0/3 ContainerCreating 0 45
查看pod详情
kubectl describe po kube-dns-67b548dcff-75hgc -n kube-system
会提示错误:
pulling image "k8s.gcr.io/pause:3.1" ...
在国内,由于gfw的原因, 我们是访问不了google的镜像服务的, 因此很多时候我们会碰到类似这样的错误failed pulling image k8s.gcr.io/pause:3.1
。这个问题我们可以通过手动下载镜像来解决。做法如下:
microk8s.docker pull mirrorgooglecontainers/pause-amd64:3.1microk8s.docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
microk8s会自带一个docker, 如果你的系统里已经安装了docker的话, 它还是用自带的那个docker,也就是microk8s.docker。因此,在解决上面提到的镜像问题的时候, 一定要使用microk8s.docker命令来操作, 使用系统原有的docker是不起作用的。能否让microk8s使用系统的docker楼主还没研究出来
除了 k8s.gcr.io/pause:3.1 之外,还需要其他镜像
microk8s.docker pull mirrorgooglecontainers/k8s-dns-kube-dns-amd64:1.14.7 microk8s.docker tag mirrorgooglecontainers/k8s-dns-kube-dns-amd64:1.14.7 gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.7 microk8s.docker pull mirrorgooglecontainers/k8s-dns-sidecar-amd64:1.14.7 microk8s.docker tag mirrorgooglecontainers/k8s-dns-sidecar-amd64:1.14.7 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.7 microk8s.docker pull mirrorgooglecontainers/k8s-dns-dnsmasq-nanny-amd64:1.14.7 microk8s.docker tag mirrorgooglecontainers/k8s-dns-dnsmasq-nanny-amd64:1.14.7 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.7
查看镜像
root@ubuntu:~# microk8s.docker images REPOSITORY TAG IMAGE ID CREATED SIZE mirrorgooglecontainers/pause-amd64 3.1 da86e6ba6ca1 17 months ago 742kB k8s.gcr.io/pause 3.1 da86e6ba6ca1 17 months ago 742kB gcr.io/google_containers/k8s-dns-sidecar-amd64 1.14.7 db76ee297b85 19 months ago 42MB mirrorgooglecontainers/k8s-dns-sidecar-amd64 1.14.7 db76ee297b85 19 months ago 42MB mirrorgooglecontainers/k8s-dns-kube-dns-amd64 1.14.7 5d049a8c4eec 19 months ago 50.3MB gcr.io/google_containers/k8s-dns-kube-dns-amd64 1.14.7 5d049a8c4eec 19 months ago 50.3MB gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 1.14.7 5feec37454f4 19 months ago 41MB mirrorgooglecontainers/k8s-dns-dnsmasq-nanny-amd64 1.14.7 5feec37454f4 19 months ago 41MB
删除掉dns pod
kubectl delete po kube-dns-67b548dcff-75hgc -n kube-system --grace-period=0 --force
再次查看dns pod,状态就正常了
root@ubuntu:~# kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE kube-dns-67b548dcff-75hgc 3/3 Running 0 45m
microk8s.docker pull nginx:1.7.9
vim nginx-service.yaml
内容如下:
apiVersion: v1 kind: Service metadata: name: nginx-deployment spec: type: NodePort ports: - port: 80 targetPort: 80 protocol: TCP name: http nodePort: 30080 selector: name: nginx
vim nginx-rc.yaml
内容如下:
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: name: nginx replicas: 1 # tells deployment to run 2 pods matching the template template: metadata: labels: name: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
kubectl apply -f nginx-service.yaml kubectl apply -f nginx-rc.yaml
http://192.168.0.162:30080/
效果如下:
对于非公网的镜像,不能使用 microk8s.docker 命令来下载镜像。这个时候,需要使用私有仓库了!
microk8s.enable registry
访问私有库地址
wget http://localhost:32000/
如果输出:
--2019-06-14 15:28:09-- http://localhost:32000/ Resolving localhost (localhost)... ::1, 127.0.0.1 Connecting to localhost (localhost)|::1|:32000... connected. HTTP request sent, awaiting response...
表示无法连接!!!
那么使用以下命令
microk8s.docker tag nginx:1.7.9 localhost:32000/nginx:1.7.9 microk8s.docker push localhost:32000/nginx:1.7.9
就会报错:
The push refers to repository [localhost:32000/nginx]
Get http://localhost:32000/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
vi /etc/hosts
注释掉这一行
#::1 localhost ip6-localhost ip6-loopback
再次使用wget命令,就正常了!
root@ubuntu:/root/mysql# wget http://localhost:32000/ --2019-06-14 15:28:42-- http://localhost:32000/ Resolving localhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:32000... connected. HTTP request sent, awaiting response... 200 OK Length: 0 Saving to: ‘index.html’ index.html [ <=> ] 0 --.-KB/s in 0s 2019-06-14 15:28:42 (0.00 B/s) - ‘index.html’ saved [0/0]
对于下载别的私有库,必须修改文件
vim /var/snap/microk8s/current/args/docker-daemon.json
增加内网中的私有库地址
{ "insecure-registries" : ["localhost:32000","192.168.0.45:5000"] }
重启docker
/etc/init.d/docker restart
下载内网中私有库的镜像
root@ubuntu:/root/mysql# microk8s.docker pull 192.168.0.45:5000/mysql5.7.23 Using default tag: latest latest: Pulling from mysql5.7.23 ad965b2cd940: Downloading 20.15MB/43.02MB 08cdc197aeb5: Download complete 87da4a64f82f: Download complete 1f15cc32d2ec: Download complete 3184f9337a95: Download complete 5586ed3c006c: Downloading 11.09MB/111.7MB 6be3e1b4270e: Download complete 2eb841e4f573: Download complete 6e39824b78a8: Download complete d9c21a3025f7: Download complete 3c9f6c373477: Download complete
本文参考链接:
https://www.jianshu.com/p/2f5eb7ef1d0f
http://opentutorial.info/kubernetes/k8s/microk8s/
https://itnext.io/microk8s-docker-registry-c3f401faa760
https://github.com/ubuntu/microk8s/issues/196
https://github.com/ubuntu/microk8s/issues/173
上一篇: python 多进程和协程配合使用
下一篇: Python 获取本月的最后一天
47745
46237
37110
34627
29229
25886
24745
19863
19417
17909
5716°
6316°
5836°
5888°
6985°
5829°
5846°
6361°
6316°
7675°