六、部署Harbor仓库
# 上传 Docker-Compose 、 harbor-offline-installer-v1.2.2.tgz 到opt目录 cd /opt chmod +x /opt/docker-compose mv docker-compose /usr/local/bin docker-compose -v tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/ vim /usr/local/harbor/harbor.cfg --5行--修改,设置为Harbor服务器的IP地址或者域名 hostname = hub.stevelu.com --9行--修改,设置为https协议 ui_url_protocol = https
#生成证书 mkdir -p /data/cert cd /data/cert #生成私钥 openssl genrsa -des3 -out server.key 2048 输入两遍密码:000000
#生成证书签名请求文件 openssl req -new -key server.key -out server.csr 输入私钥密码:000000 输入国家名:CN 输入省名:BJ 输入市名:BJ 输入组织名:stevelu 输入机构名:stevelu 输入域名:hub.stevelu.com 输入管理员邮箱:admin@stevelu.com 其它全部直接回车
#备份私钥 cp server.key server.key.org #清除私钥密码 openssl rsa -in server.key.org -out server.key 输入私钥密码:000000 #签名证书 openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt chmod +x /data/cert/* cd /usr/local/harbor/ ./install.sh
浏览器访问:https://hub.stevelu.com 用户名:admin 密码:Harbor12345
#获取一个nginx镜像 docker pull nginx:1.14 vim /etc/docker/daemon.json #添加配置 "insecure-registries": ["https://hub.stevelu.com"], systemctl daemon-reload systemctl restart docker docker-compose restart #登录harbor仓库 docker login -u admin -p Harbor12345 https://hub.stevelu.com #上传镜像 docker tag nginx:1.14 hub.stevelu.com/library/nginx:v1 #修改标签 docker push hub.stevelu.com/library/nginx:v1 #推送
6.1 修改所有节点docker配置文件对接私有仓库
vim /etc/docker/daemon.json "insecure-registries": ["https://hub.stevelu.com"], systemctl restart docker
master节点操作 #从私有仓库获取镜像创建资源 kubectl create deployment nginx-demo1 --image=hub.stevelu.com/library/nginx:v1 --port=80 --replicas=3 kubectl get pods # 查看资源 kubectl describe pod nginx-demo1-56975b76f8-glm7w #可以看到资源所使用的镜像
查看harbor日志
6.2 创建service资源让外界访问
kubectl expose deployment nginx-demo1 --port=80 --target-port=80 kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5h3m nginx NodePort 10.96.58.254 <none> 80:32084/TCP 149m nginx-demo1 ClusterIP 10.96.153.0 <none> 80/TCP 19s curl 10.96.58.254
6.3 修改service资源类型为NodePort类型
kubectl edit svc nginx-demo1 kubectl get svc
七、内核参数优化方案
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 wm.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