定义主机组
说明:
1,playbook 的主机组必须要和 playbook 文件在同一个目录下否则会报如下错误:
- [root@test1 profile]# ansible-playbook -i hosts deploy_flanneld.YAML --list-hosts
- [WARNING]: Unable to parse /k8s/profile/hosts as an inventory source
- [WARNING]: No inventory was parsed, only implicit localhost is available
- [WARNING]: Could not match supplied host pattern, ignoring: all
2, 执行 playbook 必须要在 plyaybook 的文件所在目录下执行, 否则报错; 跟带不带绝对路径没有关系, 必须保证在同一个目录
- cat>/k8s/profile/hosts <<EOF
- [k8s]
- 192.168.0.91
- 192.168.0.92
- 192.168.0.93
- [test0]
- 192.168.0.92
- 192.168.0.93
- [test1]
- 192.168.0.91
- [test2]
- 192.168.0.92
- [test3]
- 192.168.0.93
- [test4]
- 192.168.0.94
- EOF
说明: 在 playbook 中定义了通过 kubectl 安装 flanneld
本实例中定义了两个变量 cluster_cidr="172.30.0.0/16" iface="ens33" 变量名称必须小写, 对应模板文件中的 "Network": "{{ cluster_cidr }}", iface={{ iface }}
- cat> /k8s/profile/deploy_flanneld.YAML <<EOF
- - hosts: test4
- remote_user: root
- become: yes
- become_method: sudo
- vars:
- cluster_cidr: 172.30.0.0/16
- iface: ens33
- tasks:
- - name: copy flanneld config file
- template: src=/k8s/profile/kube-flannel.YAML.j2 dest=/k8s/profile/kube-flannel.YAML
- - name: install_flanneld
- command: kubectl apply -f /k8s/profile/kube-flannel.YAML
- EOF
创建模板文件
- mkdir -p /k8s/profile/
- cat> /k8s/profile/kube-flannel.YAML.j2 << EOF
- ---
- kind: ClusterRole
- apiVersion: rbac.authorization.k8s.io/v1beta1
- metadata:
- name: flannel
- rules:
- - apiGroups:
- - ""
- resources:
- - pods
- verbs:
- - get
- - apiGroups:
- - ""
- resources:
- - nodes
- verbs:
- - list
- - watch
- - apiGroups:
- - ""
- resources:
- - nodes/status
- verbs:
- - patch
- ---
- kind: ClusterRoleBinding
- apiVersion: rbac.authorization.k8s.io/v1beta1
- metadata:
- name: flannel
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: flannel
- subjects:
- - kind: ServiceAccount
- name: flannel
- namespace: kube-system
- ---
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- name: flannel
- namespace: kube-system
- ---
- kind: ConfigMap
- apiVersion: v1
- metadata:
- name: kube-flannel-cfg
- namespace: kube-system
- labels:
- tier: node
- App: flannel
- data:
- cni-conf.JSON: |
- {
- "name": "cbr0",
- "plugins": [
- {
- "type": "flannel",
- "delegate": {
- "hairpinMode": true,
- "isDefaultGateway": true
- }
- },
- {
- "type": "portmap",
- "capabilities": {
- "portMappings": true
- }
- }
- ]
- }
- net-conf.JSON: |
- {
- "Network": "{{ cluster_cidr }}",
- "Backend": {
- "Type": "vxlan"
- }
- }
- ---
- apiVersion: extensions/v1beta1
- kind: DaemonSet
- metadata:
- name: kube-flannel-ds
- namespace: kube-system
- labels:
- tier: node
- App: flannel
- spec:
- template:
- metadata:
- labels:
- tier: node
- App: flannel
- spec:
- hostNetwork: true
- nodeSelector:
- beta.kubernetes.io/arch: amd64
- tolerations:
- - key: node-role.kubernetes.io/master
- operator: Exists
- effect: NoSchedule
- serviceAccountName: flannel
- initContainers:
- - name: install-cni
- image: registry.cn-shanghai.aliyuncs.com/gcr-k8s/flannel:v0.10.0-amd64
- command:
- - cp
- args:
- - -f
- - /etc/kube-flannel/cni-conf.JSON
- - /etc/cni.NET.d/10-flannel.conflist
- volumeMounts:
- - name: cni
- mountPath: /etc/cni.NET.d
- - name: flannel-cfg
- mountPath: /etc/kube-flannel/
- containers:
- - name: kube-flannel
- image: registry.cn-shanghai.aliyuncs.com/gcr-k8s/flannel:v0.10.0-amd64
- command:
- - /opt/bin/flanneld
- args:
- - --ip-masq
- - --kube-subnet-mgr
- - --iface={{ iface }}
- resources:
- requests:
- CPU: "100m"
- memory: "50Mi"
- limits:
- CPU: "100m"
- memory: "50Mi"
- securityContext:
- privileged: true
- env:
- - name: POD_NAME
- valueFrom:
- fieldRef:
- fieldPath: metadata.name
- - name: POD_NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- volumeMounts:
- - name: run
- mountPath: /run
- - name: flannel-cfg
- mountPath: /etc/kube-flannel/
- volumes:
- - name: run
- hostPath:
- path: /run
- - name: cni
- hostPath:
- path: /etc/cni.NET.d
- - name: flannel-cfg
- configMap:
- name: kube-flannel-cfg
- EOF
开始部署
ansible /k8s/profile/deploy_flanneld.YAML
来源: http://www.bubuko.com/infodetail-2947544.html