Kubernetes-------kubeadm安装dashboard、Harbor私有仓库
K8S
kubeadm安装dashboard、Harbor私有仓库
- K8S
- 一、安装dashboard
- 所有节点安装dashboard
- 方法一
- 所有节点上传dashboard镜像 dashboard.tar 到 /opt 目录,master节点上传kubernetes-dashboard.yaml文件
- 方法二
- 查看所有容器运行状态
- 使用火狐或者360浏览器访问
- 创建service account并绑定默认cluster-admin管理员集群角色
- 获取令牌密钥
- 二、安装Harbor私有仓库
- 修改主机名
- 所有节点加上主机名映射
- 安装 docker
- 安装 Harbor
- 上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
- 生成证书
- 在所有节点上修改daemon.json 文件
- 在一个node节点上登录harbor
- 上传镜像
- 在master节点上删除之前创建的nginx资源
- 浏览器访问
- 内核参数优化方案
master(4C/4G,cpu核心数要求大于2) 192.168.100.100 docker、kubeadm、kubelet、kubectl、flannel
node01(2C/4G) 192.168.100.110 docker、kubeadm、kubelet、kubectl、flannel
node02(2C/4G) 192.168.100.120 docker、kubeadm、kubelet、kubectl、flannel
Harbor节点(hub.lp.com) 192.168.100.130 docker、docker-compose、harbor-offline-v1.2.2
一、安装dashboard
所有节点安装dashboard
方法一
所有节点上传dashboard镜像 dashboard.tar 到 /opt 目录,master节点上传kubernetes-dashboard.yaml文件
所有节点上
cd /opt/
docker load < dashboard.tar
master节点上
cd /opt/
docker load < dashboard.tarkubectl apply -f kubernetes-dashboard.yaml
方法二
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
查看所有容器运行状态
kubectl get pods,svc -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/coredns-5c98db65d4-gv5p2 1/1 Running 0 58m 10.244.0.2 master <none> <none>
pod/coredns-5c98db65d4-mnwwb 1/1 Running 0 58m 10.244.0.3 master <none> <none>
pod/etcd-master 1/1 Running 0 57m 192.168.100.100 master <none> <none>
pod/kube-apiserver-master 1/1 Running 0 57m 192.168.100.100 master <none> <none>
pod/kube-controller-manager-master 1/1 Running 0 57m 192.168.100.100 master <none> <none>
pod/kube-flannel-ds-amd64-9d95m 1/1 Running 0 54m 192.168.100.110 node01 <none> <none>
pod/kube-flannel-ds-amd64-mst9v 1/1 Running 0 54m 192.168.100.100 master <none> <none>
pod/kube-flannel-ds-amd64-r2hwn 1/1 Running 0 54m 192.168.100.120 node02 <none> <none>
pod/kube-proxy-ghxsg 1/1 Running 0 58m 192.168.100.100 master <none> <none>
pod/kube-proxy-lx67s 1/1 Running 0 56m 192.168.100.110 node01 <none> <none>
pod/kube-proxy-xd4xp 1/1 Running 0 56m 192.168.100.120 node02 <none> <none>
pod/kube-scheduler-master 1/1 Running 0 57m 192.168.100.100 master <none> <none>
pod/kubernetes-dashboard-859b87d4f7-n2br6 1/1 Running 0 31m 10.244.2.3 node02 <none> <none>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 58m k8s-app=kube-dns
service/kubernetes-dashboard NodePort 10.96.16.10 <none> 443:30001/TCP 31m k8s-app=kubernetes-dashboard
使用火狐或者360浏览器访问
https://node02:30001/
https://192.168.100.120:30001/
创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kube-systemkubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
获取令牌密钥
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')Name: dashboard-admin-token-t2gfw
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: dashboard-adminkubernetes.io/service-account.uid: f4f03ee3-19a4-40bb-a0e0-e8db673aa424Type: kubernetes.io/service-account-tokenData
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tdDJnZnciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZjRmMDNlZTMtMTlhNC00MGJiLWEwZTAtZThkYjY3M2FhNDI0Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.nuLMsyzuR1g0gg3PolrepXB7J5V4fXmCx0oo4zEhBfNoRBqv7j10GTgRAIjegE61hH699DE-M9CtRPd0N4sjFSgIgwIt5WjYIKWlJMBfxArNzusfUSVbMpyA1fS-kIBuA9nByddruZN3A_iD6zkrxlgCX83w-TJj4lYe6IPn7IRNV_Lrw8Wm9LFPCkp75ioCX0DcHsSFtAPYCBtt60-w3-VzT-X3f_bn3FsXgfY6HoDrxyxX9jAh211ytjYHYglo8A6DbqrCbLjkNR_7lVms4CeyDdp3PSlvJ1wXRaAPru9Bo2hPVo0yaVXus4vijCuTZDv1izBzOKhtsTdqMJNtTQ
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tdDJnZnciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZjRmMDNlZTMtMTlhNC00MGJiLWEwZTAtZThkYjY3M2FhNDI0Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.nuLMsyzuR1g0gg3PolrepXB7J5V4fXmCx0oo4zEhBfNoRBqv7j10GTgRAIjegE61hH699DE-M9CtRPd0N4sjFSgIgwIt5WjYIKWlJMBfxArNzusfUSVbMpyA1fS-kIBuA9nByddruZN3A_iD6zkrxlgCX83w-TJj4lYe6IPn7IRNV_Lrw8Wm9LFPCkp75ioCX0DcHsSFtAPYCBtt60-w3-VzT-X3f_bn3FsXgfY6HoDrxyxX9jAh211ytjYHYglo8A6DbqrCbLjkNR_7lVms4CeyDdp3PSlvJ1wXRaAPru9Bo2hPVo0yaVXus4vijCuTZDv1izBzOKhtsTdqMJNtTQ
//复制token令牌直接登录网站
二、安装Harbor私有仓库
修改主机名
hostnamectl set-hostname hub.lp.com
所有节点加上主机名映射
echo '192.168.100.130 hub.lp.com' >> /etc/hosts
安装 docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.iomkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://q7n9qid7.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.lp.com"]
}
EOFEOFsystemctl start docker
systemctl enable docker
安装 Harbor
上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
cd /opt
cp docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
tar zxvf harbor-offline-installer-v1.2.2.tgz
cd harbor/
vim harbor.cfg
5 hostname = hub.lp.com
9 ui_url_protocol = https
24 ssl_cert = /data/cert/server.crt
25 ssl_cert_key = /data/cert/server.key
59 harbor_admin_password = Harbor12345
生成证书
mkdir -p /data/cert
cd /data/cert
#生成私钥
openssl genrsa -des3 -out server.key 2048
输入两遍密码:123456
#生成证书签名请求文件
openssl req -new -key server.key -out server.csr
输入私钥密码:123456
输入国家名:CN
输入省名:BJ
输入市名:BJ
输入组织名:LP
输入机构名:LP
输入域名:hub.lp.com
输入管理员邮箱:admin@lp.com
其它全部直接回车#备份私钥
cp server.key server.key.org
#清除私钥密码
openssl rsa -in server.key.org -out server.key
输入私钥密码:123456
#签名证书
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crtchmod +x /data/cert/*
cd /opt/harbor/
./install.sh
浏览器访问:https://hub.lp.com
用户名:admin
密码:Harbor12345
在所有节点上修改daemon.json 文件
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://q7n9qid7.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.lp.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
在一个node节点上登录harbor
docker login -u admin -p Harbor12345 https://hub.lp.com
上传镜像
docker tag nginx:latest hub.lp.com/library/nginx:v1
docker push hub.lp.com/library/nginx:v1
在master节点上删除之前创建的nginx资源
kubectl delete deployment nginxkubectl run nginx-test1 --image=hub.lp.com/library/nginx:v1 --port=80 --replicas=2
kubectl expose deployment nginx-test1 --port=30000 --target-port=80
kubectl get svc,pods
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h16m
service/nginx NodePort 10.96.76.72 <none> 80:32277/TCP 3h7m
service/nginx-deployment NodePort 10.96.31.178 <none> 30000:32584/TCP 36m
service/nginx-test1 ClusterIP 10.96.208.79 <none> 30000/TCP 22sNAME READY STATUS RESTARTS AGE
pod/nginx-test1-7c5f7ccf5b-9ppfw 1/1 Running 0 53s
pod/nginx-test1-7c5f7ccf5b-sgvjl 1/1 Running 0 53s
yum install ipvsadm -y
ipvsadm -Ln
kubectl edit svc nginx-test1
25 type: NodePort #把调度策略改成NodePort
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h20m
nginx NodePort 10.96.76.72 <none> 80:32277/TCP 3h12m
nginx-deployment NodePort 10.96.31.178 <none> 30000:32584/TCP 40m
nginx-test1 NodePort 10.96.208.79 <none> 30000:31942/TCP 4m37s
浏览器访问
192.168.100.100:31942
192.168.100.110:31942
192.168.100.120:31942
内核参数优化方案
cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 #禁止使用 swap 空间,只有当系统内存不足(OOM)时才允许使用它
vm.overcommit_memory=1 #不检查物理内存是否够用
vm.panic_on_oom=0 #开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963 #指定最大文件句柄数
fs.nr_open=52706963 #仅4.4以上版本支持
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
Kubernetes-------kubeadm安装dashboard、Harbor私有仓库相关推荐
- 【Kubernetes系列】Kubenetes如何访问Harbor私有仓库(401 Unauthorized问题解决)
目录 一.问题描述 二.解决方法 1.登录 2.查看登录的密钥数据 3.加密密钥 4.Harbor 上创建机器人账号 5.创建 Secret (1)方式一:命令行创建 (2)方式二:yaml 文件创建 ...
- k8s-kubeadm和Harbor私有仓库部署
部署k8s-kubeadm 文章目录 环境准备 需求: 环境部署 部署K8S集群 //设定kubectl //所有节点部署网络插件flannel //测试 pod 资源创建 部署 Dashboard ...
- 1+X 云计算运维与开发(中级)案例实战——搭建harbor私有仓库并实现主从同步
1+X 云计算运维与开发(中级)案例实战--搭建harbor私有仓库并实现主从同步 前言 思路 实操 1.(个人习惯)修改主机名,添加主机映射 2. 配置镜像加速器 3. 生成CA证书,并分发证书 4 ...
- Docker容器私有仓库——Harbor私有仓库的搭建
Docker容器私有仓库--Harbor私有仓库的搭建 一.Harbor介绍 1.Harbor概念 2.Harbor的核心组件 3.Harbor的优点 二.Harbor搭建的环境准备 1.当前Harb ...
- docker 从harbor 拉取镜像慢_Kubernetes-通过Rancher从Harbor私有仓库拉取镜像
引言 前一篇文章详细描述了如何使用rancher搭建Kubernetes高可用集群,集群搭建好了后,我们就需要开始部署应用了,那么如何从私有镜像仓库拉取镜像呢? 原理 Harbor使用了基于角 ...
- 这就是你日日夜夜想要的docker!!!---------Harbor私有仓库
文章目录 一.Harbor私有仓库介绍 1.什么是Harbor?有什么作用? 2.harbor的特性 3.harbor配置文件参数 二.部署Harbor私有仓库 1.harbor服务器安装harbor ...
- Docker容器之harbor私有仓库部署与管理
Docker容器之harbor私有仓库部署与管理 前言 一.Harbor概述 二.Harbor的特性 三.Harbor的构成 四.Harbor私有仓库搭建 (1)安装docker-compose (2 ...
- Docker harbor私有仓库部署与管理
Docker harbor私有仓库部署与管理. 前言 一.什么是Harbor 二.Harbor的特性 三.Harbor的构成 四.Harbor部署 4.1 环境准备 4.2 部署Docker Comp ...
- docker push到harbor私有仓库出现的相关问题及解决办法
目录 0. 我们打开harbor的镜像仓库, 可以看到有推送仓库的命令, 包含了具体地址 1. 但是我在执行push命令报错了, Get https://10.6.119.106/v2/: dial ...
最新文章
- 字符串处理函数C语言实现(一)
- linux下将目录授权给其他用户的步骤
- spark的Web UI中的Storage啥信息都没有
- Android_(游戏)打飞机04:绘画敌机、添加子弹
- 9种让肌肤美白的简单方法 - 生活至上,美容至尚!
- 适时突破[我眼中的戴尔转型]
- Java StringTokenizer类使用方式
- PCB绘图要点QA汇总
- vim 插件安装和卸载
- # 数学基础task 01 函数极限与连续性
- Squid安装及运行控制_wuli大世界_新浪博客
- Flashpaper去掉toolbar,去掉打印的方法
- pip install使用豆瓣库
- 织梦后台登录后页面一片空白怎么办?
- C语言实例5——用*号输出字母C的图案。
- 动态内存的分配与释放
- Alphalens笔记
- C#测试网络连接测试
- 用c语言switch计算奖金,求助。。关于用switch编写简易计算器
- Bootstrap浏览器兼容性