实验环境

master  10.6.191.181
node1 10.6.191.182
node2 10.6.191.183
本地私有仓库 10.6.191.184

一、安装本地私有仓库

1、安装docker

yum install -y docker
service docker restart

2、下载Docker registry镜像,并启动私有仓库

docker pull registry
mkdir -p /data/registry/
docker run -itd -p : -v /data/registry:/var/lib/registry docker.io/registry

默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下。

二、Kubernetes 使用本地私有仓库构建kubernetes-dashboard

1、docker私有仓库配置

1)从网盘中下载并导入kubernetes-dashboard和pod-infrastructure(或者docker search这两个镜像,然后pull)

将两个镜像都改名为。

10.6.191.184:/kubernetes-dashboard-amd64:latest
10.6.191.184:/pod-infrastructure:latest

2)vim /etc/sysconfig/docker,添加红色代码:

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry gcr.io --insecure-registry 10.6.191.184:
5000'

重启docker

service docker restart

3)上传镜像到仓库

docker push 10.6.191.184:/kubernetes-dashboard-amd64:latest
docker push 10.6.191.184:/pod-infrastructure:latest

4)检测本地私有仓库

curl -XGET http://10.6.191.184:5000/v2/_catalog
curl -XGET http://10.6.191.184:5000/v2/kubernetes-dashboard-amd64/tags/list

2、node节点配置

1)node节点docker配置文件添加如下代码,同时重启docker服务,获取本地私有仓库。vim /etc/sysconfig/docker

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false
ADD_REGISTRY='--add-registry 10.6.191.184:5000'
#添加私有仓库

2)需要在Docker主机添加本地仓库地址,/etc/docker/daemon.json文件中代码如下,并重启docker:

cat > /etc/docker/daemon.json << EOF
{
"insecure-registries":["10.6.191.184:5000"]
}
EOF
service docker restart

3)修改/etc/kubernetes/kubele

配置文件将KUBELET_POD_INFRA_CONTAINER选项注释,同时添加一个新的KUBELET_POD_INFRA_CONTAINER参数,代码如下,前提需要将pod-infrastructure镜像上传私有仓库。

#KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=10.6.191.184:5000/pod-infrastructure:latest"

4)在每台nodes上重启kubelet服务

systemctl  restart  kubelet.service

ps:

1、当构造kubernetes-dashboard报错。

查看pod描述

kubectl get pods --all-namespaces
kubectl describe pods/kubernetes-dashboard--hptlr --namespace="kube-system"

原因:缺少gcr.io/google_containers/pause-amd64:3.0基础镜像

解决办法:在所有节点都下载这个基础镜像,新版本的Kubernetes在安装部署中,需要从k8s.grc.io仓库中拉取所需镜像文件,但由于国内网络防火墙问题导致无法正常拉取,不能                   直接下载这个镜像,所有拉去其他源的镜像,并改tag。

docker search pause-amd64
docker pull docker.io/huangyj/pause-amd64
docker tag docker.io/huangyj/pause-amd64:latest gcr.io/google_containers/pause-amd64:3.0
docker rmi docker.io/huangyj/pause-amd64

2、在/etc/sysconfig/docker和/etc/docker/daemon.json不能同时有insecure-registries,报错了

解决办法:只在/etc/docker/daemon.json添加,在/etc/sysconfig/docker不添加。

3、master端配置

1)创建kube-namespace.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
spec:
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
spec:
containers:
- name: kubernetes-dashboard
image: 10.6.191.184:/kubernetes-dashboard-amd64:latest
resources:
# keep request = limit to keep this container in guaranteed class
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
ports:
- containerPort:
args:
- --apiserver-host=http://10.6.191.181:8080
livenessProbe:
httpGet:
path: /
port:
initialDelaySeconds:
timeoutSeconds:
---
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
spec:
selector:
k8s-app: kubernetes-dashboard
ports:
- port:
targetPort:

2)创建dashboard

kubectl create  -k  kube-dashboard.yaml

3)查看状态

kubectl  get  pods  --all-namespaces

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(11-4)译 -&gt; 在”模型定义”函数里调用另一个”模型定义”函数
  2. JavaScript dom 动态创建标记
  3. mysql高可用架构之mysql-mmm配置详解
  4. 【bzoj2281】 Sdoi2011—黑白棋
  5. PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
  6. update kernel
  7. 苹果开发者账号注册&amp;真机调试
  8. 无法加载 DLL“ArcGISVersion.dll”: 找不到指定的模块
  9. java.util.Arrays的使用
  10. django自带User管理中添加自己的字段方法
  11. 简单的php数据库操作类代码(增,删,改,查)
  12. 【interview】Microsoft面经
  13. 一个.net的程序员如何转到java的?
  14. C#下用于同时使用OpenCvSharp和Emgu.CV两个库的相互转换库
  15. 布局管理器之BorderLayout(边界布局)
  16. Windows IIS 服务器配置HTTPS启用TLS协议。
  17. poj2464扫描线好题,树状数组解法
  18. mysql export query result
  19. GIS+=地理信息+容器技术(4)——Docker执行
  20. 如何解决Unsupported Architecture. Your executable contains unsupported architecture &#39;[x86_64, i386]

热门文章

  1. VS 2015 C#不能进入断点
  2. php获取当前月份的前(后)几个月
  3. 3ds Max制作一面飘扬的旗帜效果图
  4. MVC 设计模式
  5. 运维派 企业面试题6 防dos攻击
  6. watch监听
  7. Flux架构与Redux简介
  8. js Date() 时间函数处理 关于 toLocaleDateString()
  9. Json相关内容
  10. 低价购买 洛谷1108 codevs4748 dp