kubespray项目地址: https://github.com/kubernetes-sigs/kubespray
官方参考:http://192.168.100.150/k8s/kubespray-k8s/0812/kubespray/#/docs/getting-started
项目分支:release-2.11
K8s版本:1.15.1
Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
Kubernetes (K8s) 是一个开源容器编排引擎,用于自动化容器化应用程序的部署,扩展和管理。
应用部署方式的演变历史:物理机部署 => 虚拟机部署 => 容器化部署
准备
因国外网络问题,安装前需作必要的修改,写成预处理脚本如下:
pre-install.sh:
1 |
|
inventory/mycluster/hosts.ini示例:
node1、node2是master调度节点,node1~node3是etcd节点,node3~node6是工作节点。
1 | [all] |
安装
另找一个执行ansible的机器,并授权使其可以免密登录node1~node6:
1 | ssh-keygen # 这几条命令都会提示手动确认 |
执行安装:
1 | # 执行上述准备好的预处理脚本(对应v1.15.1版本) |
登录
获取登录kubernetes-dashboard的token:
1 | kubectl get svc --all-namespaces | grep kubernetes-dashboard |
未使用keepalived时,可通过其一master登录:https://192.168.100.79:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
keepalived配置示例
node1 (master-1) 的/etc/keepalived/keepalived.conf:
1 | ! Configuration File for keepalived |
node2 (master-2) 的/etc/keepalived/keepalived.conf:
1 | ! Configuration File for keepalived |
仅state BACKUP
和priority 100
两处不同。
补充(1.14.1)
修改了配置文件中的镜像地址
- inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
- roles/download/defaults/main.yml
大部分镜像可以改从registry.cn-hangzhou.aliyuncs.com/google_containers获取。
不能直接下载的软件
通过浏览器(已设置google代理)下载kubeadm和hyperkube,放置在内网文件服务器中。hyperkube和kubeadm包会被下载到所有k8s节点的/tmp/releases目录下。
1 | # kubeadm_download_url: https://storage.googleapis.com/kubernetes-release/release/v1.14.1/bin/linux/amd64/kubeadm |
不能从Ali镜像库获取的镜像
- k8s.gcr.io/cluster-proportional-autoscaler-amd64:1.4.0
- k8s.gcr.io/k8s-dns-node-cache:1.15.1
- 执行
1 | pip install -r requirements.txt |
- 如何清理
1 | ansible -i inventory/mycluster/hosts.ini all -m script -a '/opt/clean.sh' |
clean.sh:
1 |
|
- 安装完成后修改节点标签
1 | kubectl label node node3 node-role.kubernetes.io/worker="" #标记worker |
Kubernetes Dashboard
以NodePort方式暴露服务
修改代码,使用NodePort方式访问Dashboard。
1 | # ./roles/kubernetes-apps/ansible/templates/dashboard.yml.j2 |
- 获取token
1 | kubectl get svc --all-namespaces | grep kubernetes-dashboard |
非NodePort方式访问
https://192.168.100.78:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/(192.168.100.78是VIP或者某个master节点IP)
后续操作
以上完成的是带有kubernetes dashboard的初始环境的搭建,之后还要进行 替换Ingress、设置AD认证、安装管理工具等,此不涉及。