dashboard 镜像源_使用 microk8s 安装单节点 k8s v1.15系列

使用 microk8s 安装单节点 k8s 集群

microk8s 适用于 42 种 Linux 版本的单一 k8s 包。专为开发人员而设计,非常适合边缘,物联网和电器。由于总所周知的网络原因,默认的镜像包下载地址无法访问,本文可作为第一次安装的人的一份参考

安装

安装环境为 ubuntu18.04,此系统已内置 snap,可以直接通过 snap 安装

安装命令sudo snap install microk8s --classic

或者选择其他系列版本,如v1.14。v1.14版本开始,容器运行时默认改为containerd 。命令snap install microk8s --classic --channel=1.14/stable

这里我选择安装v1.15系列的,snap install microk8s --classic --channel=1.15/stable

安装完成,使用命令microk8s.status查看microk8s是否可用。安装完成将有如下输出:

microk8s is running

addons:

knative: disabled

jaeger: disabled

fluentd: disabled

gpu: disabled

cilium: disabled

storage: disabled

registry: disabled

rbac: disabled

ingress: disabled

dns: disabled

metrics-server: disabled

linkerd: disabled

prometheus: disabled

istio: disabled

dashboard: disabled

为了避免与已安装的 kubectl 发生冲突并避免覆盖任何现有的 Kubernetes 配置文件,MicroK8s 添加了一个 microk8s.kubectl 命令,配置为专门访问新的 MicroK8s 安装。在使用 kubectl 时,确保前缀 kubectl 用 microk8s,如:

microk8s.kubectl get nodes

microk8s.kubectl get services

如果 kubectl 没有安装过,则可以别名 microk8s.kubectl 来 kubectl 使用下面的命令snap alias microk8s.kubectl kubectl,恢复命令snap unalias kubectl

如果已经安装了 kubectl,可以用下面的命令覆盖配置文件:

microk8s.kubectl config view --raw > $HOME/.kube/config

问题排查

安装过程通过命令microk8s.inspect排查,通过命令journalctl -u snap.microk8s..service查看有问题的服务的日志。所有服务running以及没有WARNING就是安装成功了。以下是一个例子,需要配置防火墙:

Inspecting services

Service snap.microk8s.daemon-containerd is running

Service snap.microk8s.daemon-apiserver is running

Service snap.microk8s.daemon-proxy is running

Service snap.microk8s.daemon-kubelet is running

Service snap.microk8s.daemon-scheduler is running

Service snap.microk8s.daemon-controller-manager is running

Service snap.microk8s.daemon-etcd is running

Copy service arguments to the final report tarball

Inspecting AppArmor configuration

Gathering system information

Copy processes list to the final report tarball

Copy snap list to the final report tarball

Copy VM name (or none) to the final report tarball

Copy disk usage information to the final report tarball

Copy memory usage information to the final report tarball

Copy server uptime to the final report tarball

Copy current linux distribution to the final report tarball

Copy openSSL information to the final report tarball

Copy network configuration to the final report tarball

Inspecting kubernetes cluster

Inspect kubernetes cluster

WARNING: IPtables FORWARD policy is DROP. Consider enabling traffic forwarding with: sudo iptables -P FORWARD ACCEPT

The change can be made persistent with: sudo apt-get install iptables-persistent

Building the report tarball

Report tarball is at /var/snap/microk8s/826/inspection-report-20190906_092912.tar.gz

通过命令解决:sudo iptables -P FORWARD ACCEPT,利用ufw持久化这些配置sudo ufw default allow routed

下载镜像

修改 sandbox_image

不修改也行,使用下面加载镜像的脚本,也能得到 k8s.gcr.io/pause:3.1

编辑/var/snap/microk8s/current/args/containerd.template.toml文件,sandbox_image 处修改为:

[plugins]

[plugins.cri]

sandbox_image = "gcr.azk8s.cn/google-containers/pause:3.1"

更换镜像源

编辑/var/snap/microk8s/current/args/containerd.template.toml文件,mirrors 处修改为:

[plugins]

[plugins.cri]

[plugins.cri.registry]

[plugins.cri.registry.mirrors]

[plugins.cri.registry.mirrors."docker.io"]

endpoint = ["https://registry.docker-cn.com"]

[plugins.cri.registry.mirrors."local.insecure-registry.io"]

endpoint = ["http://localhost:32000"]

修改完以上配置之后重启:microk8s.stop && microk8s.start

默认镜像下载地址是k8s.gcr.io,我们通过镜像下载到本地,再修改标签的方式解决这个网络问题

命令如下:

#!/bin/bash

images=(

k8s.gcr.io/pause:3.1=gcr.azk8s.cn/google-containers/pause:3.1

gcr.io/google_containers/defaultbackend-amd64:1.4=gcr.azk8s.cn/google-containers/defaultbackend-amd64:1.4

k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1=registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1

k8s.gcr.io/heapster-influxdb-amd64:v1.3.3=registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-influxdb-amd64:v1.3.3

k8s.gcr.io/heapster-amd64:v1.5.2=registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-amd64:v1.5.2

k8s.gcr.io/heapster-grafana-amd64:v4.4.3=registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-grafana-amd64:v4.4.3

)

OIFS=$IFS; # 保存旧值

for image in ${images[@]};do

IFS='='

set $image

docker pull $2

docker tag $2 $1

docker rmi $2

docker save $1 > 1.tar && microk8s.ctr -n k8s.io i import 1.tar && rm 1.tar

IFS=$OIFS; # 还原旧值

done

查看需要的镜像

通过命令 microk8s.kubectl get all -A查看名字是pod/开头的,找到 pod 对应名称,然后使用命令microk8s.kubectl describe pod kubernetes-dashboard-7d75c474bb-44789 -n kube-system查看输出最后的事件,事件描述了需要拉取哪个镜像。当启用某个插件的时候,因网络问题无法启动,可通过此方法找到所需镜像,再根据上述命令从别的地方拉取

NAMESPACE NAME READY STATUS RESTARTS AGE

kube-system pod/kubernetes-dashboard-7d75c474bb-44789 1/1 Running 0 4d

dashboard

Kubernetes Dashboard 是 Kubernetes 集群的基于 Web 的通用 UI。它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身

默认情况下,dashboard 部署完会自动生成一个证书,但是这个证书貌似不是很好使,一般浏览器不放行,只有火狐浏览器能忽略风险继续访问,因此需要用自己的证书替换,只需要在启用 dashboard 前,在与 dashboard 相同命名空间下创建名为

kubernetes-dashboard-certs 的密钥

生成证书

# 生成dashboard.key私钥和dashboard.csr文件

openssl genrsa -des3 -passout pass:123456 -out dashboard.pass.key 2048

openssl rsa -passin pass:123456 -in dashboard.pass.key -out dashboard.key

rm dashboard.pass.key

openssl req -new -key dashboard.key -out dashboard.csr

# SSL证书

openssl x509 -req -sha256 -days 365 -in dashboard.csr -signkey dashboard.key -out dashboard.crt

rm dashboard.csr

mkdir certs && mv dashboard.key dashboard.crt certs

创建密钥

自定义证书必须存储在与 Kubernetes Dashboard 相同的命名空间中的 kubernetes-dashboard-certs 密钥中。将 dashboard.crt 和 dashboard.key 文件存储在 certs 目录下,然后用这些文件的内容创建密钥

microk8s.kubectl create secret generic kubernetes-dashboard-certs --from-file=./certs -n kube-system

部署并访问

启用插件,microk8s.enable dns ingress dashboard

修改 dashboar dservice 中 spec-type 为 NodePort:microk8s.kubectl edit svc kubernetes-dashboard -n kube-system

使用命令kubectl.exe describe svc kubernetes-dashboard -n kube-system查看 NodePort,该值则为主机端口,访问 https+主机 ip+NodePort 即可

登录之前需要获取 token,使用如下命令获取:

microk8s.kubectl -n kube-system describe secret $(microk8s.kubectl -n kube-system get secret | grep default-token | cut -d " " -f1) | grep token: | awk '{print $2;}'

到这里就完成了 dashboard 的部署和访问了

总结

以上就是本文关于 k8s 的单机版部署过程,适合新手即开发环境,建议多多动手敲一下命令,加快熟悉速度

安装过程注意所有涉及的组件,以及相关名词,再结合文档 https://kubernetes.io/docs/home/ 排坑,这将是愉快的学习之旅

你可能感兴趣的:(dashboard,镜像源)