类型 | 服务器IP地址 | 备注 |
---|---|---|
Ansible(2台) | 172.24.78.21/22 | K8S集群部署服务器,可以和在一起,需要配置在负载均衡上实现反向代理,dashboard的端口为8443 |
K8S Master(2台) | 172.24.78.21/22 | K8s控制端,通过一个VIP做主备高可用 |
Harbor(2台) | 172.24.78.23/24 | 高可用镜像服务器 |
Etcd(最少3台) | 172.24.78.25/26/27 | 保存k8s集群数据的服务器 |
Hproxy(2台) | 172.24.78.28/29 | 高可用etcd代理服务器 |
Node节点(2-N台) | 172.24.78.31/32/xxx | 真正运行容器的服务器,高可用环境至少两台 |
序号 | 类型 | 服务器IP | 主机名 | VIP |
---|---|---|---|---|
1 | K8S Master1 | 172.24.78.21 | master1.his.net | 172.24.78.18 |
2 | K8S Master2 | 172.24.78.22 | master2.his.net | 172.24.78.18 |
3 | Harbor1 | 172.24.78.23 | harbor1.his.net | |
4 | Harbor2 | 172.24.78.24 | harbor2.his.net | |
5 | etcd节点1 | 172.24.78.25 | etcd1.his.net | |
6 | etcd节点2 | 172.24.78.26 | etcd2.his.net | |
7 | etcd节点3 | 172.24.78.27 | etcd3.his.net | |
8 | Haproxy1 | 172.24.78.28 | ha1.his.net | |
9 | Haproxy2 | 172.24.78.29 | ha2.his.net | |
10 | Node节点1 | 172.24.78.12 | node1.his.net | |
3 | Node节点2 | 172.24.78.31 | node2.his.net |
端口:192.168.7.248:6443 #需要配置在负载均衡上实现反向代理,dashboard的端口为8443
操作系统:ubuntu server 1804
k8s版本: 1.13.5
calico:3.4.4
修改主机名及IP地址
vim /etc/netplan/50-cloud-init.yaml
dhcp4: no
dhcp6: no
addresses: [172.24.78.25/25]
gateway4: 172.24.78.1
nameservers:
addresses: [34.34.34.34,202.96.134.133]
hostnamectl set-hostname master1.his.net...
添加hosts映射
172.24.78.21 master1.his.net
172.24.78.22 master2.his.net
172.24.78.23 harbor1.his.net
172.24.78.24 harbor2.his.net
172.24.78.25 etcd1.his.net
172.24.78.26 etcd2.his.net
172.24.78.27 etcd3.his.net
172.24.78.28 ha1.his.net
172.24.78.29 ha2.his.net
172.24.78.12 node1.his.net
172.24.78.31 node2.his.net
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get upgrade
sudo add-apt-repository main
sudo add-apt-repository universe
sudo add-apt-repository restricted
sudo add-apt-repository multiverse
sudo apt-get update
apt-get install git apt-get install python2.7
ln -s /usr/bin/python2.7 /usr/bin/python
安装依赖软件
sudo apt-get install -y git
sudo apt-get install -y python2.7
ln -s /usr/bin/python2.7 /usr/bin/python
apt-get install git python-pip ansible -y
apt-get install sshpass
ssh-keygen
回车3次
修改自动缩进
vim ~/.vimrc
set paste
修改hosts映射或在DNS中配置
vim /etc/hosts
172.24.78.23 harbor.his.net
172.24.78.24 harbor.his.net
172.24.78.21 master1.his.net
172.24.78.22 master2.his.net
172.24.78.23 harbor1.his.net
172.24.78.24 harbor2.his.net
172.24.78.25 etcd1.his.net
172.24.78.26 etcd2.his.net
172.24.78.27 etcd3.his.net
172.24.78.28 ha1.his.net
172.24.78.29 ha2.his.net
172.24.78.30 node1.his.net
172.24.78.31 node2.his.net
分发公钥脚本(master-12)
vim scp.sh
:set paste
#!/bin/bash
#目标主机列表
IP="
172.24.78.21
172.24.78.22
172.24.78.23
172.24.78.24
172.24.78.25
172.24.78.26
172.24.78.27
172.24.78.28
172.24.78.29
172.24.78.30
172.24.78.31
"
for node in ${IP};do
sshpass -p silence ssh-copy-id ${node} -o StrictHostKeyChecking=no
if [ $? -eq 0 ];then
echo "${node} 秘钥copy完成"
else
echo "${node} 秘钥copy失败"
fi
done
#同步docker证书脚本
vim cer.sh
#!/bin/bash
#目标主机列表
IP="
172.24.78.21
172.24.78.22
172.24.78.23
172.24.78.24
172.24.78.25
172.24.78.26
172.24.78.27
172.24.78.28
172.24.78.29
172.24.78.30
172.24.78.31
"
for node in ${IP};do
sshpass -p silence ssh-copy-id ${node} -o StrictHostKeyChecking=no
if [ $? -eq 0 ];then
echo "${node} 秘钥copy完成"
echo "${node} 秘钥copy完成,准备环境初始化....."
ssh ${node} "mkdir /etc/docker/certs.d/harbor.his.net -p"
echo "Harbor 证书目录创建成功!"
scp /etc/docker/certs.d/harbor.his.net/harborca.crt ${node}:/etc/docker/certs.d/harbor.his.net/harborca.crt
echo "Harbor 证书拷贝成功!"
scp /etc/hosts ${node}:/etc/hosts
echo "host 文件拷贝完成"
scp -r /root/.docker ${node}:/root/
echo "Harbor 认证文件拷贝完成!"
scp -r /etc/resolv.conf ${node}:/etc/
else
echo "${node} 秘钥copy失败"
fi
done
执行脚本同步
bash scp.sh
bash cer.sh
git clone -b 0.6.1 https://github.com/easzlab/kubeasz.git
mv /etc/ansible/* /opt/
mv kubeasz/* /etc/ansible/
cd /etc/ansible/
cp example/hosts.m-masters.example ./hosts
准备hosts文件
cd /etc/ansible
cp example/hosts.m-masters.example ./hosts
vim hosts
# 集群部署节点:一般为运行ansible 脚本的节点
# 变量 NTP_ENABLED (=yes/no) 设置集群是否安装 chrony 时间同步
[deploy]
172.24.78.21 NTP_ENABLED=no
# etcd集群请提供如下NODE_NAME,注意etcd集群必须是1,3,5,7...奇数个节点
[etcd]
172.24.78.25 NODE_NAME=etcd1
172.24.78.26 NODE_NAME=etcd2
172.24.78.27 NODE_NAME=etcd3
[new-etcd] # 预留组,后续添加etcd节点使用
#172.24.78.x NODE_NAME=etcdx
[kube-master]
172.24.78.21
[new-master] # 预留组,后续添加master节点使用
#172.24.78.22
[kube-node]
172.24.78.30
[new-node] # 预留组,后续添加node节点使用
#172.24.78.31
# 参数 NEW_INSTALL:yes表示新建,no表示使用已有harbor服务器
# 如果不使用域名,可以设置 HARBOR_DOMAIN=""
[harbor]
#172.24.78.23 HARBOR_DOMAIN="harbor.his.net" NEW_INSTALL=no
# 负载均衡(目前已支持多于2节点,一般2节点就够了) 安装 haproxy+keepalived
[lb]
172.24.78.29 LB_ROLE=backup
172.24.78.28 LB_ROLE=master
#【可选】外部负载均衡,用于自有环境负载转发 NodePort 暴露的服务等
[ex-lb]
#172.24.78.6 LB_ROLE=backup EX_VIP=172.24.78.250
#172.24.78.7 LB_ROLE=master EX_VIP=172.24.78.250
[all:vars]
# ---------集群主要参数---------------
#集群部署模式:allinone, single-master, multi-master
DEPLOY_MODE=multi-master
#集群主版本号,目前支持: v1.8, v1.9, v1.10,v1.11, v1.12, v1.13
K8S_VER="v1.13"
# 集群 MASTER IP即 LB节点VIP地址,为区别与默认apiserver端口,设置VIP监听的服务端口8443
# 公有云上请使用云负载均衡内网地址和监听端口
MASTER_IP="172.24.78.18"
KUBE_APISERVER="https://{{ MASTER_IP }}:6443"
# 集群网络插件,目前支持calico, flannel, kube-router, cilium
CLUSTER_NETWORK="calico"
# 服务网段 (Service CIDR),注意不要与内网已有网段冲突
SERVICE_CIDR="10.20.0.0/16"
# POD 网段 (Cluster CIDR),注意不要与内网已有网段冲突
CLUSTER_CIDR="172.31.0.0/16"
# 服务端口范围 (NodePort Range)
NODE_PORT_RANGE="20000-60000"
# kubernetes 服务 IP (预分配,一般是 SERVICE_CIDR 中第一个IP)
CLUSTER_KUBERNETES_SVC_IP="10.20.0.1"
# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
CLUSTER_DNS_SVC_IP="10.20.254.254"
# 集群 DNS 域名
CLUSTER_DNS_DOMAIN="his20.local."
# 集群basic auth 使用的用户名和密码
BASIC_AUTH_USER="admin"
BASIC_AUTH_PASS="silence"
# ---------附加参数--------------------
#默认二进制文件目录
bin_dir="/usr/bin"
#证书目录
ca_dir="/etc/kubernetes/ssl"
#部署目录,即 ansible 工作目录,建议不要修改
base_dir="/etc/ansible"
准备二进制文件
cd /etc/ansible/bin
tar xvf k8s.1-13-5.tar.gz
mv bin/* .
cd /etc/ansible
ansible-playbook 01.prepare.yml
提示
PLAY RECAP ************************************************************************************************************************************************************
172.24.78.21 : ok=33 changed=13 unreachable=0 failed=0
172.24.78.25 : ok=15 changed=13 unreachable=0 failed=0
172.24.78.26 : ok=15 changed=13 unreachable=0 failed=0
172.24.78.27 : ok=15 changed=13 unreachable=0 failed=0
172.24.78.28 : ok=29 changed=21 unreachable=0 failed=0
172.24.78.29 : ok=29 changed=21 unreachable=0 failed=0
172.24.78.30 : ok=15 changed=13 unreachable=0 failed=0
ansible-playbook 02.etcd.yml
提示
PLAY RECAP ************************************************************************************************************************************************************
172.24.78.25 : ok=11 changed=9 unreachable=0 failed=0
172.24.78.26 : ok=11 changed=9 unreachable=0 failed=0
172.24.78.27 : ok=11 changed=9 unreachable=0 failed=0
各etcd服务器验证etcd服务(登录各etcd服务器)
定义etcd-IP变量
export NODE_IPS="172.24.78.25 172.24.78.26 172.24.78.27"
测试etcd服务
for ip in ${NODE_IPS}; do ETCDCTL_API=3 /usr/bin/etcdctl --endpoints=https://${ip}:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem endpoint health; done
提示
https://172.24.78.25:2379 is healthy: successfully committed proposal: took = 2.397926ms
https://172.24.78.26:2379 is healthy: successfully committed proposal: took = 2.771018ms
https://172.24.78.27:2379 is healthy: successfully committed proposal: took = 2.593279ms
修改host文件,启用相关主机
vim hosts
[new-master] # 预留组,后续添加master节点使用
172.24.78.22
[kube-node]
172.24.78.30
[new-node] # 预留组,后续添加node节点使用
172.24.78.31
ansible-playbook 03.docker.yml
提示
PLAY RECAP ************************************************************************************************************************************************************
172.24.78.22 : ok=13 changed=10 unreachable=0 failed=0
172.24.78.30 : ok=12 changed=4 unreachable=0 failed=0
172.24.78.31 : ok=12 changed=9 unreachable=0 failed=0
ansible-playbook 04.kube-master.yml
提示
PLAY RECAP ************************************************************************************************************************************************************
172.24.78.21 : ok=39 changed=34 unreachable=0 failed=0
ansible-playbook 05.kube-node.yml
备注:node节点必须安装docker
PLAY RECAP ************************************************************************************************************************************************************
172.24.78.30 : ok=24 changed=23 unreachable=0 failed=0
ansible-playbook 06.network.yml
报错提示
fatal: [172.24.78.30 -> 172.24.78.21]: FAILED! => {"attempts": 15, "changed": true, "cmd": "/usr/bin/kubectl get pod -n kube-system -o wide|grep ‘calico-node‘|grep ‘ 172.24.78.30 ‘|awk ‘{print $3}‘", "delta": "0:00:00.098717", "end": "2020-08-15 06:46:14.391950", "rc": 0, "start": "2020-08-15 06:46:14.293233", "stderr": "", "stderr_lines": [], "stdout": "Init:0/1", "stdout_lines": ["Init:0/1"]}
PLAY RECAP ************************************************************************************************************************************************************
172.24.78.21 : ok=16 changed=14 unreachable=0 failed=0
172.24.78.30 : ok=7 changed=6 unreachable=0 failed=1
解决办法:下载镜像并上传至本地镜像仓库
vim roles/calico/defaults/main.yml
#更新支持calico
calica_ver: "3.3.2"
导入3.3.2镜像包
cd /opt
tar xvf calico-release-v3.3.2.tgz
cd release-v3.3.2/images
docker load -i calico-node.tar
docker tag calico/node:v3.3.2 harbor.his.net/baseimages/calico-node:v3.3.2
docker push harbor.his.net/baseimages/calico-node:v3.3.2
#导入镜像
docker load -i calico-cni.tar
docker tag calico/cni:v3.3.2 harbor.his.net/baseimages/calico-cni:v3.3.2
docker push harbor.his.net/baseimages/calico-cni:v3.3.2
#导入镜像
docker load -i calico-kube-controllers.tar
docker tag calico/kube-controllers:v3.3.2 harbor.his.net/baseimages/calico-kube-controllers:v3.3.2
docker push harbor.his.net/baseimages/calico-kube-controllers:v3.3.2
查看镜像是否上传成功
修改yaml文件为本地仓库地址
vim /etc/ansible/roles/calico/templates/calico-v3.3.yaml.j2
containers:
-name:calico-node
image:harbor.his.net/baseimages/calico-node:v3.3.2
-name:calico-cni
image:harbor.his.net/baseimages/calico-cni:v3.3.2
-name:calico-kube-controllers
image:harbor.his.net/baseimages/calico-kube-controllers:v3.3.2
替换calicoctl文件版本
mv /etc/ansible/bin/calicoctl /tmp
将本地calicoctl上传至/etc/ansible/bin/calicoctl
chmod a+x /etc/ansible/bin/calicoctl
root@master1:/etc/ansible/bin# ./calicoctl version
Client Version: v3.3.2
Build date: 2018-12-03T15:10:51+0000
Git commit: 594fd84e
Cluster Version: v3.4.1
Cluster Type: k8s,bgp
执行ansible
ansible-playbook 06.network.yml
提示
#异常
PLAY RECAP *********************************************************************************************************************************************
172.24.78.21 : ok=15 changed=8 unreachable=0 failed=0
172.24.78.30 : ok=8 changed=4 unreachable=0 failed=0
#正常
PLAY RECAP **********************************************************************************************************************************************
172.24.78.21 : ok=8 changed=2 unreachable=0 failed=0
172.24.78.22 : ok=15 changed=7 unreachable=0 failed=0
172.24.78.30 : ok=8 changed=3 unreachable=0 failed=0
172.24.78.31 : ok=8 changed=3 unreachable=0 failed=0
在节点查看是否能下载calico镜像
calicoctl node status
root@master1:/etc/ansible/bin# calicoctl node status
Calico process is running.
IPv4 BGP status
+--------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+-------------+
| 172.24.78.30 | node-to-node mesh | up | 01:17:32 | Established |
+--------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
root@master1:/opt/release-v3.3.2/images# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-5445d7cb7b-62smh 1/1 Running 0 2m56s
calico-node-n75j8 2/2 Running 0 94m
calico-node-rcmtc 2/2 Running 2 95m
calico-node-vkcjr 2/2 Running 0 66m
calico-node-vm7w5 2/2 Running 0 71m
kubernetes-dashboard-74f5cf8499-wxgt7 1/1 Running 0 2m56s
#去掉新加node注释
vim /etc/ansible/hosts
[new-node] # 预留组,后续添加node节点使用
172.24.78.31
ansible-playbook 20.addnode.yml
提示
PLAY RECAP *********************************************************************************************************************************************
172.24.78.21 : ok=2 changed=1 unreachable=0 failed=0
172.24.78.31 : ok=67 changed=54 unreachable=0 failed=0
#注释掉lb组
vim /etc/ansible/hosts
[lb]
#172.24.78.29 LB_ROLE=backup
#172.24.78.28 LB_ROLE=master
ansible-playbook 21.addmaster.yml
提示
PLAY RECAP *********************************************************************************************************************************************
172.24.78.21 : ok=2 changed=1 unreachable=0 failed=0
172.24.78.22 : ok=82 changed=68 unreachable=0 failed=0
查看结果
calicoctl node status
提示
Calico process is running.
IPv4 BGP status
+--------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+-------------+
| 172.24.78.30 | node-to-node mesh | up | 01:17:32 | Established |
| 172.24.78.31 | node-to-node mesh | up | 01:41:33 | Established |
| 172.24.78.22 | node-to-node mesh | up | 01:46:20 | Established |
+--------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
root@master1:/etc/ansible/bin# kubectl get nodes
提示
NAME STATUS ROLES AGE VERSION
172.24.78.21 Ready,SchedulingDisabled master 43h v1.13.5
172.24.78.22 Ready,SchedulingDisabled master 65s v1.13.5
172.24.78.30 Ready node 43h v1.13.5
172.24.78.31 Ready node 5m52s v1.13.5
导入dashboard镜像并上传至本地harbor服务器
cd /opt/
tar xvf dashboard-yaml_image-1.10.1.tar.gz
docker load -i kubernetes-dashboard-amd64-v1.10.1.tar.gz
docker tag gcr.io/google-containers/kubernetes-dashboard-amd64:v1.10.1 harbor.his.net/baseimages/kubernetes-dashboard-amd64:v1.10.1
docker push harbor.his.net/baseimages/kubernetes-dashboard-amd64:v1.10.1
修改yaml文件中的dashboard镜像地址为本地harbor地址
mv /etc/ansible/manifests/dashboard/* /tmp/
tar xvf dashboard-yaml_image-1.10.1.tar.gz -C /etc/ansible/manifests/dashboard/
cd /etc/ansible/manifests/dashboard/
vim kubernetes-dashboard.yaml
image: harbor.his.net/baseimages/kubernetes-dashboard-amd64:v1.10.1
创建服务
kubectl apply -f .
? 提示
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
serviceaccount/dashboard-read-user created
clusterrolebinding.rbac.authorization.k8s.io/dashboard-read-binding created
clusterrole.rbac.authorization.k8s.io/dashboard-read-clusterrole created
clusterrole.rbac.authorization.k8s.io/ui-admin created
rolebinding.rbac.authorization.k8s.io/ui-admin-binding created
clusterrole.rbac.authorization.k8s.io/ui-read created
rolebinding.rbac.authorization.k8s.io/ui-read-binding created
验证dashboard启动完成
kubectl get pods -n kube-system
提示
root@master1:/opt/release-v3.3.2/images# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-5445d7cb7b-62smh 1/1 Running 0 2m56s
calico-node-n75j8 2/2 Running 0 94m
calico-node-rcmtc 2/2 Running 2 95m
calico-node-vkcjr 2/2 Running 0 66m
calico-node-vm7w5 2/2 Running 0 71m
kubernetes-dashboard-74f5cf8499-wxgt7 1/1 Running 0 2m56s
kubectl get svc -n kube-system
提示
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.20.234.4 <none> 443:57125/TCP 43m
kubectl get svc -n kube-system
提示
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.20.234.4 <none> 443:57125/TCP 44m
kubectl cluster-info
提示
Kubernetes master is running at https://172.24.78.18:6443
kubernetes-dashboard is running at https://172.24.78.18:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
To further debug and diagnose cluster problems, use ‘kubectl cluster-info dump‘.
查看dashboard登录用户及密码
vim /etc/ansible/hosts
# 集群basic auth 使用的用户名和密码
BASIC_AUTH_USER="admin"
BASIC_AUTH_PASS="silence"
#输入三次
测试访问
https://172.24.78.18:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
令牌
token登录dashboard
kubectl -n kube-system get secret | grep admin-user
#admin-user-token-vlt4j kubernetes.io/service-account-token 3 59m
kubectl -n kube-system describe secret admin-user-token-vlt4j
token:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXZsdDRqIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjNTcyYTMwOC1lMDJlLTExZWEtOWJlNi1mZWZjZmUyNjMzYjQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.kJhzTn58yTYu6BGvT55hH8C_W92xK85mRjD0vigqRUSKfUwxPbe0bnt47wJ0j6qvDRO-siofrwnQm9wvX0ge9yKBrXmcsNmiuocmMqK9jUjWUnXNEVIge3IVtgdYxEoETpiM_MSEE1sEHUh1sXv9V51--ObO43V7AQnyOXEQKEX4Tf6qv66q7YYuYHBWdBODyEWgBfRITq2tBA6lGefaQOR3x69WoQdx40yzejUXwuqzGc0bEy87w79372jDxSfWDdlAKha5FiXaSFd9IVI7YIjnbEt2VuvNJ_zc0PbZ2CbavDRbMyY3HHEw8s0jLOyeFzZsi-fVKWyRmQrEpFdinQ
制作Kubeconfig文件
设置token登录会话保持时间
vim /etc/ansible/manifests/dashboard/kubernetes-dashboard.yaml
containers:
- name: kubernetes-dashboard
#image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
image: harbor.his.net/baseimages/kubernetes-dashboard-amd64:v1.10.1
ports:
- containerPort: 8443
protocol: TCP
args:
- --auto-generate-certificates
- --token-ttl=43200
导入镜像并上传至本地harbor
mkdir -p /etc/ansible/manifests/dns
docker load -i k8s-dns-kube-dns-amd64_1.14.13.tar.gz
docker tag gcr.io/google-containers/k8s-dns-kube-dns-amd64:1.14.13 harbor.his.net/baseimages/k8s-dns-kube-dns-amd64:1.14.13
docker push harbor.his.net/baseimages/k8s-dns-kube-dns-amd64:1.14.13
docker load -i k8s-dns-sidecar-amd64_1.14.13.tar.gz
docker tag gcr.io/google-containers/k8s-dns-sidecar-amd64:1.14.13 harbor.his.net/baseimages/k8s-dns-sidecar-amd64:1.14.13
docker push harbor.his.net/baseimages/k8s-dns-sidecar-amd64:1.14.13
docker load -i k8s-dns-dnsmasq-nanny-amd64_1.14.13.tar.gz
docker tag gcr.io/google-containers/k8s-dns-dnsmasq-nanny-amd64:1.14.13 harbor.his.net/baseimages/k8s-dns-dnsmasq-nanny-amd64:1.14.13
docker push harbor.his.net/baseimages/k8s-dns-dnsmasq-nanny-amd64:1.14.13
修改yaml文件中的镜像地址为本地harbor地址
vim kube-dns.yaml
- name: kubedns
image: harbor.his.net/baseimages/k8s-dns-kube-dns-amd64:1.14.13
args:
- --domain=his.local.
- name: dnsmasq
image: harbor.his.net/baseimages/k8s-dns-dnsmasq-nanny-amd64:1.14.13
- name: sidecar
image: harbor.his.net/baseimages/k8s-dns-sidecar-amd64:1.14.13
args:
- --v=2
- --logtostderr
- --probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.his.local,5,SRV
- --probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.his.local,5,SRV
创建服务
kubectl apply -f kube-dns.yaml
提示
service/kube-dns created
serviceaccount/kube-dns created
configmap/kube-dns created
deployment.extensions/kube-dns created
heapster:数据采集
influxdb:数据存储
grafana:web展示
导入相应的镜像
cp -r /etc/ansible/manifests/heapster /opt/
cd /etc/ansible/manifests/heapster/
rm -rf ./*
docker load -i docker load -i heapster-amd64_v1.5.1.tar
docker tag gcr.io/google-containers/heapster-amd64:v1.5.1 harbor.his.net/baseimages/heapster-amd64:v1.5.1
docker push harbor.his.net/baseimages/heapster-amd64:v1.5.1
docker load -i eapster-grafana-amd64-v4.4.3.tar
docker tag 8cb3de219af7 harbor.his.net/baseimages/eapster-grafana-amd64:v4.4.3
docker push harbor.his.net/baseimages/eapster-grafana-amd64:v4.4.3
docker load -i heapster-influxdb-amd64_v1.3.3.tar
docker tag gcr.io/google-containers/heapster-influxdb-amd64:v1.3.3 harbor.his.net/baseimages/heapster-influxdb-amd64:v1.3.3
docker push harbor.his.net/baseimages/heapster-influxdb-amd64:v1.3.3
更改yaml中的镜像地址
vim heapster.yaml
containers:
- name: heapster
image: harbor.his.net/baseimages/heapster-amd64:v1.5.1
vim grafana.yaml
containers:
- name: grafana
image: harbor.his.net/baseimages/eapster-grafana-amd64:v4.4.3
vim influxdb.yaml
containers:
- name: influxdb
image: harbor.his.net/baseimages/heapster-influxdb-amd64:v1.3.3
创建服务
kubectl apply -f .
提示
service/monitoring-grafana created
serviceaccount/heapster created
clusterrolebinding.rbac.authorization.k8s.io/heapster created
deployment.extensions/heapster created
service/heapster created
deployment.extensions/monitoring-influxdb created
service/monitoring-influxdb created
原文:https://blog.51cto.com/13688209/2521027