使用ansible一键安装k8s集群,集群除kubelet外全部容器化相关组件:
- 集群使用的k8s版本为1.4.1
- 默认安装使用supervisor保证kubelet的可用性
- 使用kubelet的pod-manifest-path保证core组件的可用性
- 网络暂使用flannel(容器化) vxlan的模式也是由kubelet保证其可用性
- 集群安装默认开启https及token验证
- 集群默认安装dns及1.4的dashboard
├── hosts
├── roles
│ ├── swqk8smaster
│ │ ├── defaults
│ │ │ └── main.yml
│ │ ├── files
│ │ │ ├── cni
│ │ │ │ └── bin
│ │ │ ├── images
│ │ │ │ ├── etcd-amd64.tar
│ │ │ │ ├── exechealthz-amd64.tar
│ │ │ │ ├── flannel.tar
│ │ │ │ ├── kube-agent.tar
│ │ │ │ ├── kube-apiserver.tar
│ │ │ │ ├── kube-controller-manager.tar
│ │ │ │ ├── kubedns-amd64.tar
│ │ │ │ ├── kube-dnsmasq-amd64.tar
│ │ │ │ ├── kube-proxy.tar
│ │ │ │ ├── kubernetes-dashboard.tar
│ │ │ │ ├── kube-scheduler.tar
│ │ │ │ └── pause-amd64.tar
│ │ │ ├── kubectl
│ │ │ ├── kubelet
│ │ │ └── lib
│ │ │ ├── pip-8.1.2.tar.gz
│ │ │ └── setuptools-28.6.0.tar.gz
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ │ └── main.yml
│ │ ├── README.md
│ │ ├── tasks
│ │ │ ├── centos_install.yml
│ │ │ ├── main.yml
│ │ │ └── ubuntu_install.yml
│ │ ├── templates
│ │ │ └── master
│ │ │ ├── addons
│ │ │ │ ├── calico
│ │ │ │ │ ├── calico-tls.yaml.j2
│ │ │ │ │ └── calico.yaml.j2
│ │ │ │ ├── dashboard
│ │ │ │ │ ├── authentication
│ │ │ │ │ │ ├── dashboard-controller.yaml.j2
│ │ │ │ │ │ └── dashboard-service.yaml.j2
│ │ │ │ │ ├── dashboard-controller.yaml.j2
│ │ │ │ │ └── dashboard-service.yaml.j2
│ │ │ │ └── dns
│ │ │ │ └── 1.4.1
│ │ │ │ ├── authentication
│ │ │ │ │ ├── skydns-rc.yaml.j2
│ │ │ │ │ └── skydns-svc.yaml.j2
│ │ │ │ ├── skydns-rc.yaml.j2
│ │ │ │ └── skydns-svc.yaml.j2
│ │ │ ├── config
│ │ │ │ ├── authentication
│ │ │ │ │ └── kubelet.conf.j2
│ │ │ │ └── kubelet.conf.j2
│ │ │ ├── manifests
│ │ │ │ ├── authentication
│ │ │ │ │ ├── etcd.json.j2
│ │ │ │ │ ├── flannel.yaml.j2
│ │ │ │ │ ├── kube-apiserver.json.j2
│ │ │ │ │ ├── kube-controller-manager.json.j2
│ │ │ │ │ ├── kube-proxy.json.j2
│ │ │ │ │ └── kube-scheduler.json.j2
│ │ │ │ ├── etcd.json.j2
│ │ │ │ ├── flannel.yaml.j2
│ │ │ │ ├── kube-apiserver.json.j2
│ │ │ │ ├── kube-controller-manager.json.j2
│ │ │ │ ├── kube-proxy.json.j2
│ │ │ │ └── kube-scheduler.json.j2
│ │ │ └── supervisor
│ │ │ └── kubelet.conf.j2
│ │ ├── tests
│ │ │ ├── inventory
│ │ │ └── test.yml
│ │ └── vars
│ │ └── main.yml
│ └── swqk8snode
│ ├── defaults
│ │ └── main.yml
│ ├── files
│ │ ├── cni
│ │ │ └── bin
│ │ ├── images
│ │ │ ├── flannel.tar
│ │ │ ├── kube-proxy.tar
│ │ │ └── pause-amd64.tar
│ │ ├── kubelet
│ │ └── lib
│ │ ├── pip-8.1.2.tar.gz
│ │ └── setuptools-28.6.0.tar.gz
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── README.md
│ ├── tasks
│ │ ├── centos_install.yml
│ │ ├── main.yml
│ │ └── ubuntu_install.yml
│ ├── templates
│ │ └── node
│ │ ├── config
│ │ │ ├── authentication
│ │ │ │ └── kubelet.conf.j2
│ │ │ └── kubelet.conf.j2
│ │ ├── manifests
│ │ │ ├── authentication
│ │ │ │ ├── flannel.yaml.j2
│ │ │ │ └── kube-proxy.json.j2
│ │ │ ├── flannel.yaml.j2
│ │ │ └── kube-proxy.json.j2
│ │ └── supervisor
│ │ └── kubelet.conf.j2
│ ├── tests
│ │ ├── inventory
│ │ └── test.yml
│ └── vars
│ └── main.yml
└── setup.yml
- 需要把二进制的kubelet和kubctl copy到role file下
- 需要把相关容器save 到 role file image下或者注释load直接修改var进行pull (https://hub.docker.com/r/swqmaven)
- Ansible1.4 版本+
pod_infra_container_image_name: gcr.io/google_containers/pause-amd64:3.0
etcd_image_name: gcr.io/google_containers/etcd-amd64:2.2.5
kube_apiserver_image_name: gcr.io/google_containers/kube-apiserver-amd64:v1.4.1
kube_controller_manager_image_name: gcr.io/google_containers/kube-controller-manager-amd64:v1.4.1
kube_scheduler_image_name: gcr.io/google_containers/kube-scheduler-amd64:v1.4.1
kube_proxy_image_name: gcr.io/google_containers/kube-proxy-amd64:v1.4.1
flannel_image_name: quay.io/coreos/flannel:v0.6.2-amd64
kubedens_image_name: gcr.io/google_containers/kubedns-amd64:1.8
dnsmasq_image_name: gcr.io/google_containers/kube-dnsmasq-amd64:1.4
exechealthz_image_name: gcr.io/google_containers/exechealthz-amd64:1.2
kubernetes_dashboard_image_name: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.4.0
cluster_name: kubernetes
etcd_servers: http://127.0.0.1:2379
kubernetes_master_url: http://127.0.0.1:8080
kubernetes_master_url_tls: https://127.0.0.1:443
kubernetes_master_ip: 127.0.0.1:8080
service_cluster_ip_range: 100.64.0.0/12
flannel_network_config: "{ \"Network\": \"172.24.0.0/13\", \"Backend\": { \"Type\": \"vxlan\", \"VNI\": 1 } }"
flannel_etcd_prefix: /coreos.com/network
kubernetes_ca_crt_CN: swqmaven.com
kubernetes_cluster_default_token: 1MVytSxl5f2X05fjnZGmvFiXkixYQUgq
kubernetes_cluster_default_user: swqmaven
kubernetes_cluster_default_uid: 000c2968d923
kubernetes_cluster_default_group: system:kubelet-bootstrap
cluster_dns: 100.64.0.10
cluster_domain: cluster.local
None
BSD
swqmaven