一、部署docker registry

           生产环境中我们一般通过搭建本地的私有镜像仓库(docker registry)来拉取镜像。

1、拉取registry镜像

[root@k8s-master ~]#docker pull docker.io/registry
Using default tag: latest
Trying to pull repository docker.io/library/registry ...
sha256:0e40793ad06ac099ba63b5a8fae7a83288e64b50fe2eafa2b59741de85fd3b97: Pulling from docker.io/library/registry
b7f33cc0b48e: Pull complete
46730e1e05c9: Pull complete
458210699647: Pull complete
0cf045fea0fd: Pull complete
b78a03aa98b7: Pull complete
Digest: sha256:0e40793ad06ac099ba63b5a8fae7a83288e64b50fe2eafa2b59741de85fd3b97
Status: Downloaded newer image for docker.io/registry:latest

2、启动registry

docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true  --log-driver=none -v /home/data/registrydata:/tmp/registry registry

注:/home/data/registrydata是一个比较大的系统分区,今后镜像仓库中的全部数据都会保存在这个外挂目录下

3、Node节点改名并推送镜像

①以部署dashboard的镜像为例,后面也会用到

百度云下载链接:https://pan.baidu.com/s/1geKEADt#list/path=%2F    密码:lbyp

②上传到Node节点并推送到镜像仓库

docker load < dashboard.tar
docker load < podinfrastructure.tar
docker tag gcr.io/google_containers/kubernetes-dashboard-amd64:v1.7.1 10.0.0.211:5000/google_containers/kubernetes-dashboard-amd64:latest
docker tag registry.access.redhat.com/rhel7/pod-infrastructure:latest 10.0.0.211:5000/rhel7/pod-infrastructure:latestdocker push 10.0.0.211:5000/google_containers/kubernetes-dashboard-amd64:latest
docker push 10.0.0.211:5000/rhel7/pod-infrastructure:latest

推送失败报错

Get https://10.0.0.211:5000/v1/_ping: http: server gave HTTP response to HTTPS client

解决办法

①种方法:vim /etc/sysconfig/docker加入
OPTIONS='--insecure-registry 10.0.0.211:5000'
②种方法
echo '{ "insecure-registries":["10.0.0.211:5000"] }' > /etc/docker/daemon.json
systemctl restart docker.service

4、Master节点从本地仓库拉取镜像

docker pull 10.0.0.211:5000/google_containers/kubernetes-dashboard-amd64:latest
docker pull 10.0.0.211:5000/rhel7/pod-infrastructure

查看:

二、部署dashboard

1、编辑dashboard.yaml文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Keep the name in sync with image version and
# gce/coreos/kube-manifests/addons/dashboard counterpartsname: kubernetes-dashboard-latestnamespace: kube-system
spec:replicas: 1template:metadata:labels:k8s-app: kubernetes-dashboardversion: latestkubernetes.io/cluster-service: "true"spec:containers:- name: kubernetes-dashboardimage: 10.0.0.211:5000/google_containers/kubernetes-dashboard-amd64:latestresources:# keep request = limit to keep this container in guaranteed classlimits:cpu: 100mmemory: 50Mirequests:cpu: 100mmemory: 50Miports:- containerPort: 9090args:-  --apiserver-host=http://10.0.0.211:8080
        livenessProbe:httpGet:path: /port: 9090initialDelaySeconds: 30timeoutSeconds: 30

注:Dashboard是在yaml中定义的,要更改dashboard.yaml中对应的“image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1”为“image: 10.0.0.211:5000/kubernetes-dashboard-amd64:latest”

 2、编辑dashboardsvc.yaml文件

apiVersion: v1
kind: Service
metadata:name: kubernetes-dashboardnamespace: kube-systemlabels:k8s-app: kubernetes-dashboardkubernetes.io/cluster-service: "true"
spec:selector:k8s-app: kubernetes-dashboardports:- port: 80targetPort: 9090

3、Master节点创建启动命令

kubectl create -f dashboard.yaml
kubectl create -f dashboardsvc.yaml

4、Master执行命令验证

[root@k8s-master ~]# kubectl get deployment --all-namespaces
NAMESPACE     NAME                          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kube-system   kubernetes-dashboard-latest   1         1         1            1           3h
[root@k8s-master ~]# kubectl get svc  --all-namespaces
NAMESPACE     NAME                   CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
default       kubernetes             10.254.0.1      <none>        443/TCP   2d
kube-system   kubernetes-dashboard   10.254.233.11   <none>        80/TCP    3h
[root@k8s-master ~]# kubectl get pod  -o wide  --all-namespaces
NAMESPACE     NAME                                           READY     STATUS    RESTARTS   AGE       IP           NODE
kube-system   kubernetes-dashboard-latest-1294433048-09p76   1/1       Running   0          3h        172.16.6.2   k8s-node-1

5、浏览器访问

http://10.0.0.211:8080/ui

6、销毁应用

Master节点执行

kubectl delete deployment kubernetes-dashboard-latest --namespace=kube-system
kubectl delete svc  kubernetes-dashboard --namespace=kube-system

三、部署遇到的问题

问题1:

{"kind": "Status","apiVersion": "v1","metadata": {},"status": "Failure","message": "no endpoints available for service \"kubernetes-dashboard\"","reason": "ServiceUnavailable","code": 503
}

解决:需要pause-amd64这个镜像

docker pull googlecontainer/pause-amd64:3.0
docker tag googlecontainer/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0

kubectl delete -f dashboard.yaml
kubectl delete -f dashboardsvc.yamlkubectl create -f dashboard.yaml
kubectl create -f dashboardsvc.yaml

详细查看报错问题

kubectl describe pod kubernetes-dashboard-latest-bf59c4df4-xcblq --namespace kube-system

问题2:部署完成之后访问浏览器报错

Error: 'dial tcp 172.16.6.2:9090: getsockopt: connection refused'
Trying to reach: 'http://172.16.6.2:9090/'

解决:iptables拦截

iptables -P FORWARD ACCEPT   或者  echo "net.ipv4.ip_forward = 1" >>/usr/lib/sysctl.d/50-default.conf

 如果永久生效的话,可以修改docker服务启动脚本

vim /etc/systemd/system/docker.service #增加一行
[Service]
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT

总结排查方法:

①检查apiserver的地址设置的是否正确,然后就是flannel是否配置启动,确保docker0和flannel0处于同一网段

②查看master和nodes上的flannel配置是否一致

# Flanneld configuration options  # etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://10.0.0.211:2379"# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

③检查iptables -L,检查node节点上的FORWARD 查看转发是否是drop,如果是drop,则开启

iptables -P FORWARD ACCEPT
或者
echo "net.ipv4.ip_forward = 1" >>/usr/lib/sysctl.d/50-default.conf

转载于:https://www.cnblogs.com/yanxinjiang/p/9592562.html

linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署相关推荐

  1. Linux运维架构师、SRE技术图谱

    Linux运维架构师.SRE技术图谱 Web服务器: apache, tomcat, nginx, lighttpd, varnish 监控: nagios. ganglia. cacti. zabb ...

  2. 干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard

    干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard 原创: 成晨 京东云开发者社区  昨天 在上一篇"Cloud Native 实操系列"文章中,我们 ...

  3. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是"鸟哥的私房菜",讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服 ...

  4. 《Linux运维实战:Centos7.6基于ansible一键离线部署mongodb4.2.23容器版副本集群》

    一.部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 mongodb副本集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ans ...

  5. linux运维架构篇

    集群规划说明 集群架构概念图示 集群案例规划 集群主机规划表 关于主机规划注意事项: 灰色IP地址属于临时使用,企业场景一般没有. 负载均衡器的 VIP10.0.0.3/24 带外网IP的服务器的内网 ...

  6. Linux运维提升之路

    目录 运维的职业现状 运维的工作 运维的晋升空间 运维要掌握的必备技能 初级: 中级: 高级: 资深: 运维的时间管理 首先,在进做IT运维行业前,你一定要做好心理准备,这并不是一个轻松的工作,工作中 ...

  7. Docker运维教程(5)本地镜像制作与dockerfile

    虽然Docker仓库中提供了大量镜像,但是当我们找不到现成镜像或者需要在镜像中满足特定功能时,就需要自己来制作一套镜像.Docker提供了三种制作镜像的方式:docker save/load.dock ...

  8. www.yaxjf.com+m.php,linux运维架构--PHP开发-零基础学习PHP视频教程

    Dockfile介绍 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令 ...

  9. httpqyl.php,linux运维架构--PHP开发-零基础学习PHP视频教程

    Dockfile介绍 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令 ...

最新文章

  1. 面试必备|带你彻底搞懂Python生成器
  2. python装饰设备_Python: 装饰器的小例子
  3. canvas 闭合_想使用SVG或者canvas 手绘闭合多边形,使用vml效果已经实现了,由于vml只能支持ie所以想转成SVG或canvas...
  4. 【P2774】方格取数问题(贪心+最大流,洛谷)
  5. memcached应用策略(转)
  6. 2021 ISC会上山石网科重磅发布智能下一代防火墙A系列,重新定义边界安全防御
  7. 信号学习第一课--基础知识
  8. mysql空指针异常处理_mysql 查询空指针异常
  9. “跟着吴恩达老师入门机器学习”学习笔记(二)
  10. 软件测试固态硬盘健康状态良好,HDTune太老鲁大师太傻 用专业软件洞悉固态硬盘健康状态...
  11. 【PR】PR剪辑视频片段并保存
  12. RBAC模型整合数据权限
  13. 一些特殊区域的全纯自同构群
  14. CHD6.3.1部署文档
  15. everything无法搜索刚插入的硬盘中的文件
  16. 华为服务器电源性能指标,华为服务器可服务性设计介绍-电源篇.PDF
  17. Translatium for Mac(Google在线翻译工具)
  18. VS调试技巧:让断点在for循环中i为某个值的时候停下来
  19. IBM AIX 安装说明
  20. 【愚公系列】2023年02月 WMS智能仓储系统-015.基础设置(货主信息、运费设置、客户信息)

热门文章

  1. php psd图层重命名,ps批量修改图层名字的脚本(附批量替换方法)
  2. 这台计算机没有连接到网络怎么办,如果计算机连接到路由器并且没有互联网,该怎么办...
  3. how to open files as sudo
  4. 如何筛选特征?用随机森林(RF)
  5. 百度Apolloscapes,亚马逊评论,最强数据集50个最佳机器学习公共数据
  6. SSD物体检测模型Keras版
  7. android peopleactivity.java,Android面试基础篇---Activity(上)
  8. 校园无盘服务器,校园微机系统优化及无盘改造实例.docx
  9. linux cron 服务,Linux定时任务Crontab详解(推荐)
  10. oracle掉电后ora 00600,ORA-00600: 内部错误代码, 参数: [kcratr1_lastbwr](转)