ansible 安装 k8s Master篇

基础信息:

# ansible --version
ansible 2.3.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.10 (default, Dec 19 2017, 00:57:58) [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

 

  • 首先附上需要的配置文件:
# ll /data/k8s/
总用量 20
-rw-r--r-- 1 root root 382 7月  11 16:07 k8s-master-apiserver
-rw-r--r-- 1 root root 150 7月  11 16:05 k8s-master-config
-rw-r--r-- 1 root root 156 7月  11 16:05 k8s-master-etcd.conf
-rw-r--r-- 1 root root  91 7月  11 16:08 k8s-master-flanneld
-rw-r--r-- 1 root root 149 7月  11 16:04 virt7-docker-common-release.repo
# cat /data/k8s/k8s-master-apiserver 
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://k8s-master:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""

# cat /data/k8s/k8s-master-config 
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://k8s-master:8080"

# cat /data/k8s/k8s-master-etcd.conf 
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

# cat /data/k8s/k8s-master-flanneld 
FLANNEL_ETCD_ENDPOINTS="http://k8s-master:2379"
FLANNEL_ETCD_PREFIX="/kube-centos/network"

# cat /data/k8s/virt7-docker-common-release.repo 
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
k8s master 配置文件
  • ansible plabook  --  k8s-master.yml
---
- name: k8s master install
  hosts: k8s-master
  remote_user: xxxx
  become: yes
  become_method: sudo
  vars:
    IP: "{{ ansible_eth0['ipv4']['address'] }}"

  tasks:
  - name: hosts
    lineinfile: 
      path: /etc/hosts 
      line: '{{IP}}  k8s-master'

  - name: selinux
    lineinfile:
      path: /etc/selinux/config
      regexp: '^SELINUX=.*'
      line: 'SELINUX=disabled'

  - name: copy k8s yum.repo
    copy:
      src: "{{ item.src }}"
      dest: "{{ item.dest }}"
      owner: root
      group: root
      mode: 0644
      backup: yes
      directory_mode: yes
    with_items:
    - { src: '/data/k8s/virt7-docker-common-release.repo', dest: '/etc/yum.repos.d/virt7-docker-common-release.repo' }

  - name: yum install k8s master package
    yum:
      name: "{{ packages }}"
      enablerepo: virt7-docker-common-release
      state: present 
    vars:
      packages:
      - kubernetes
      - etcd
      - flannel
      - vim
      - telnet
      - wget

  - name: copy k8s conf
    copy:
      src: "{{ item.src }}"
      dest: "{{ item.dest }}"
      owner: root
      group: root
      mode: 0644
      backup: yes
      directory_mode: yes
    with_items:
    - { src: '/data/k8s/k8s-master-config', dest: '/etc/kubernetes/config' }
    - { src: '/data/k8s/k8s-master-etcd.conf', dest: '/etc/etcd/etcd.conf' }
    - { src: '/data/k8s/k8s-master-apiserver', dest: '/etc/kubernetes/apiserver' }
    - { src: '/data/k8s/k8s-master-flanneld', dest: '/etc/sysconfig/flanneld' }

  - name: systemctl start etcd
    systemd:
      name: etcd
      state: started
      enabled: yes

  - name: config etcd
    shell: "{{ item }}"
    with_items:
    - etcdctl mkdir /kube-centos/network
    - etcdctl mk /kube-centos/network/config "{\"Network\":\"172.30.0.0/16\",\"SubnetLen\":24,\"Backend\":{\"Type\":\"vxlan\"}}"

  - name: systemctl restart service
    systemd:
      name: "{{ item }}"
      state: restarted
      enabled: yes
    with_items:
    - etcd
    - kube-apiserver
    - kube-controller-manager
    - kube-scheduler
    - flanneld

  - name: reboot linux
    command: /sbin/shutdown -r +1
    async: 0
    poll: 0
    ignore_errors: true
  • ansible hosts 文件
# head /etc/ansible/hosts 
[k8s-master]
xx.xx.xx.xx

[k8s-master:vars]
ansible_ssh_user=xxxx
ansible_ssh_port=xx
ansible_ssh_private_key_file=/root/pem/xxxx.pem

 

 

 

 

有不同意见的大家可以留言交流。

 

 

posted @ 2018-07-11 19:18  Star-Hitian  阅读(510)  评论(0)    收藏  举报