kubespray 一键安装k8s集群
1. clone代码
git clone https://github.com/kubernetes-incubator/kubespray.git
2. 添加inventory/inventory
单独添加ansible inventory放到inventory目录下
添加后确保ansible可以执行
ansible all -i inventory/inventory -m ping
result:
node2 | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
node1 | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
node3 | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
ansible inventory
# ## Configure 'ip' variable to bind kubernetes services on a
# ## different ip than the default iface
node1 ansible_ssh_host=192.168.10.2 ansible_user=root ip=192.168.10.2
node2 ansible_ssh_host=192.168.10.3 ansible_user=root ip=192.168.10.3
node3 ansible_ssh_host=192.168.10.4 ansible_user=root ip=192.168.10.4
# ## configure a bastion host if your nodes are not directly reachable
# bastion ansible_ssh_host=x.x.x.x
[kube-master]
node1
node2
[kube-node]
node1
node2
node3
[etcd]
node1
node2
node3
[k8s-cluster:children]
kube-node
kube-master
[calico-rr]
[vault]
node1
node2
node3
3. 替换官方镜像源
相关镜像被墙替换为阿里云镜像
官方最新版本v1.9.3,由于在阿里云没找到故使用v1.9.2
以下是修改后的镜像,也可以把所有镜像下载到本地
vim roles/download/defaults/main.yml
kube_version: v1.9.2
# Containers
etcd_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/etcd"
etcd_image_tag: "{{ etcd_version }}"
flannel_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/flannel"
flannel_image_tag: "{{ flannel_version }}"
flannel_cni_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/flannel-cni"
flannel_cni_image_tag: "{{ flannel_cni_version }}"
calicoctl_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/calico_ctl"
calicoctl_image_tag: "{{ calico_ctl_version }}"
calico_node_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/calico_node"
calico_node_image_tag: "{{ calico_version }}"
calico_cni_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/calico_cni"
calico_cni_image_tag: "{{ calico_cni_version }}"
calico_policy_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/kube-controllers"
calico_policy_image_tag: "{{ calico_policy_version }}"
calico_rr_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/routereflector"
calico_rr_image_tag: "{{ calico_rr_version }}"
hyperkube_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/hyperkube"
hyperkube_image_tag: "{{ kubedns_version }}_coreos.0"
pod_infra_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/pause-amd64"
pod_infra_image_tag: "{{ pod_infra_version }}"
install_socat_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/install-socat"
install_socat_image_tag: "latest"
netcheck_version: "v1.0"
netcheck_agent_img_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-netchecker-agent"
netcheck_agent_tag: "{{ netcheck_version }}"
netcheck_server_img_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-netchecker-server"
netcheck_server_tag: "{{ netcheck_version }}"
weave_kube_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/weave-kube"
weave_kube_image_tag: "{{ weave_version }}"
weave_npc_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/weave-npc"
weave_npc_image_tag: "{{ weave_version }}"
contiv_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/netplugin"
contiv_image_tag: "{{ contiv_version }}"
contiv_auth_proxy_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/auth_proxy"
contiv_auth_proxy_image_tag: "{{ contiv_version }}"
cilium_image_repo: "docker.io/cilium/cilium"
cilium_image_tag: "{{ cilium_version }}"
nginx_image_repo: nginx
nginx_image_tag: 1.13
dnsmasq_version: 2.78
dnsmasq_image_repo: "andyshinn/dnsmasq"
dnsmasq_image_tag: "{{ dnsmasq_version }}"
kubedns_version: 1.14.8
kubedns_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-dns-kube-dns-amd64"
kubedns_image_tag: "{{ kubedns_version }}"
dnsmasq_nanny_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-dns-dnsmasq-nanny-amd64"
dnsmasq_nanny_image_tag: "{{ kubedns_version }}"
dnsmasq_sidecar_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-dns-sidecar-amd64"
dnsmasq_sidecar_image_tag: "{{ kubedns_version }}"
dnsmasqautoscaler_version: 1.1.2
dnsmasqautoscaler_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/cluster-proportional-autoscaler-amd64"
dnsmasqautoscaler_image_tag: "{{ dnsmasqautoscaler_version }}"
kubednsautoscaler_version: 1.1.2
kubednsautoscaler_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/cluster-proportional-autoscaler-amd64"
kubednsautoscaler_image_tag: "{{ kubednsautoscaler_version }}"
test_image_repo: busybox
test_image_tag: latest
elasticsearch_version: "v2.4.1"
elasticsearch_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/elasticsearch"
elasticsearch_image_tag: "{{ elasticsearch_version }}"
fluentd_version: "1.22"
fluentd_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/fluentd-elasticsearch"
fluentd_image_tag: "{{ fluentd_version }}"
kibana_version: "v4.6.1"
kibana_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/kibana"
kibana_image_tag: "{{ kibana_version }}"
helm_version: "v2.8.1"
helm_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-helm"
helm_image_tag: "{{ helm_version }}"
tiller_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/tiller"
tiller_image_tag: "{{ helm_version }}"
vault_image_repo: "vault"
vault_image_tag: "{{ vault_version }}"
修改dashboard dns
vim roles/kubernetes-apps/ansible/defaults/main.yml
# Images
kubedns_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-dns-kube-dns-amd64"
kubedns_image_tag: "{{ kubedns_version }}"
dnsmasq_nanny_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-dns-dnsmasq-nanny-amd64"
dnsmasq_nanny_image_tag: "{{ kubedns_version }}"
dnsmasq_sidecar_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/k8s-dns-sidecar-amd64"
dnsmasq_sidecar_image_tag: "{{ kubedns_version }}"
kubednsautoscaler_image_repo: "registry.cn-hangzhou.aliyuncs.com/kubespray24/cluster-proportional-autoscaler-amd64"
kubednsautoscaler_image_tag: "{{ kubednsautoscaler_version }}"
# Dashboard
dashboard_enabled: true
dashboard_image_repo: registry.cn-hangzhou.aliyuncs.com/kubespray24/kubernetes-dashboard-amd64
dashboard_image_tag: v1.8.1
4. 修改配置
#
[root@slave1 kubespray]# vim inventory/local/group_vars/k8s-cluster.yml
kube_network_plugin: flannel
kube_version: v1.9.2
#
[root@slave1 kubespray]# vim inventory/local/group_vars/all.yml
#根据系统修改
bootstrap_os: centos
[root@slave1 kubespray]# vim roles/network_plugin/flannel/defaults/main.yml
flannel_backend_type: "host-gw"
#修改管理密码
[root@slave1 kubespray]# vim roles/kubespray-defaults/defaults/main.yaml
bootstrap_os: centos
kube_version: v1.9.2
#密码
kube_api_pwd: 'yourpassowrd'
#修改kube api地址
[root@slave1 kubespray]# vim roles/kubernetes/master/defaults/main.yml
# change to 0.0.0.0 to enable insecure access from anywhere (not recommended)
kube_apiserver_insecure_bind_address: 0.0.0.0
# By default the external API listens on all interfaces, this can be changed to
# listen on a specific address/interface.
kube_apiserver_bind_address: 0.0.0.0
5.安装
执行剧本,开启一键安装k8s
[root@slave1 kubespray]# ansible-playbook -i inventory/inventory cluster.yml -b -v --private-key=~/.ssh/id_rsa
issues
FAILED - RETRYING: HANDLER: kubernetes/master : Master | wait for the apiserver to be running (1 retries left).
fatal: [node1]: FAILED! => {"attempts": 10, "changed": false, "content": "", "failed": true, "msg": "Status code was not [200]: Request failed: <urlopen error [Errno 111] Connection refused>", "redirected": false, "status": -1, "url": "http://localhost:8080/healthz"}
关闭所有节点swap
swapoff -a
ansible all -i inventory/inventory -m command -a 'swapoff -a'
fatal: [node2]: FAILED! => {
"assertion": "ansible_swaptotal_mb == 0",
"changed": false,
"evaluated_to": false,
"failed": true
}
fatal: [node1]: FAILED! => {
"assertion": "ansible_swaptotal_mb == 0",
"changed": false,
"evaluated_to": false,
"failed": true
}
fatal: [node3]: FAILED! => {
"assertion": "ansible_swaptotal_mb == 0",
"changed": false,
"evaluated_to": false,
"failed": true
}
关闭管理机swap
swapoff -a
kubespray 一键安装k8s集群的更多相关文章
- [k8s]kubespray(ansible)自动化安装k8s集群
kubespray(ansible)自动化安装k8s集群 https://github.com/kubernetes-incubator/kubespray https://kubernetes.io ...
- 使用kubeadm安装k8s集群故障处理三则
最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...
- yum安装k8s集群
k8s的安装有多种方式,如yum安装,kubeadm安装,二进制安装等.本文是入门系列,只是为了快速了解k8s的原理和工作过程,对k8s有一个快速的了解,这里直接采用yum安装 的1.5.2为案例进行 ...
- kubernetes教程第一章-kubeadm高可用安装k8s集群
目录 Kubeadm高可用安装k8s集群 kubeadm高可用安装1.18基本说明 k8s高可用架构解析 kubeadm基本环境配置 kubeadm基本组件安装 kubeadm集群初始化 高可用Mas ...
- 冰河教你一次性成功安装K8S集群(基于一主两从模式)
写在前面 研究K8S有一段时间了,最开始学习K8S时,根据网上的教程安装K8S环境总是报错.所以,我就改变了学习策略,先不搞环境搭建了.先通过官网学习了K8S的整体架构,底层原理,又硬啃了一遍K8S源 ...
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...
- k8s学习笔记之二:使用kubeadm安装k8s集群
一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...
- Centos 安装k8s 集群(单master开发环境)
本教程是在VM中搭建K8s 所以第一步骤先配置虚拟机的ip 和上网情况详细参考https://www.cnblogs.com/chongyao/p/9209527.html 开始搭建K8s集群 两台机 ...
- 【K8S】基于单Master节点安装K8S集群
写在前面 最近在研究K8S,今天就输出部分研究成果吧,后续也会持续更新. 集群规划 IP 主机名 节点 操作系统版本 192.168.175.101 binghe101 Master CentOS 8 ...
随机推荐
- python 回溯法 子集树模板 系列 —— 13、最佳作业调度问题
问题 给定 n 个作业,每一个作业都有两项子任务需要分别在两台机器上完成.每一个作业必须先由机器1 处理,然后由机器2处理. 试设计一个算法找出完成这n个任务的最佳调度,使其机器2完成各作业时间之和达 ...
- [LOJ#6068]. 「2017 山东一轮集训 Day4」棋盘[费用流]
题意 题目链接 分析 考虑每个棋子对对应的横向纵向的极大区间的影响:记之前这个区间中的点数为 \(x\) ,那么此次多配对的数量即 \(x\) . 考虑费用流,\(S\rightarrow 横向区间 ...
- C#图片处理(转zhjzwl/archive)
基本原理: 获取每一个像素值,然后处理这些每一个像素值. 原始图片: ISINBAEVA ~~~~~~~~ 一. 底片效果 原理: GetPixel方法获得每一点像素的值, 然后再使用SetPix ...
- Js_checkbox的互斥
function ck_click(obj) { var ck_20 = document.getElementById("ck_20"); var ck_25 = documen ...
- 用 IIS 搭建 mercurial server
mercurial server 对于代码管理工具,更多的人可能对 Git 更熟悉一些(Git太火了).其实另外一款分布式代码管理工具也被广泛的使用,它就是 mercurial.当多人协作时最好能够通 ...
- 物理机通过http访问eNSP虚拟Server
由于测试需要,本文主要通过一个简单的例子介绍通过物理机的浏览器访问华为eNSP虚拟Server,访问网页. 1.首先配置虚拟网卡的地址 2.通过华为的eNSP模拟软件,做出如下拓扑结构图,配置地址如图 ...
- Unity接入监控摄像头
公网RTSP测试地址: rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov RTSP测试软件: EasyPlayerRTSP: https:// ...
- "Regressing Robust and Discriminative 3D Morphable Models with a very Deep Neural Network" 解读
简介:这是一篇17年的CVPR,作者提出使用现有的人脸识别深度神经网络Resnet101来得到一个具有鲁棒性的人脸模型. 原文链接:https://www.researchgate.net/publi ...
- 作业 20181204-4 互评Final版本
此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2478] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ...
- linux内核分析--计算机是如何工作的
实验部分 使用gcc -S -o main.s main.c -m32命令将源代码编译成汇编代码. 源代码如下: int g(int x) { return x + 9; } int f(int x) ...