使用playbook部署k8s集群

1.部署ansible集群
 

使用python脚本一个简单的搭建ansible集群-CSDN博客

2.ansible命令搭建k8s:


1.主机规划:

节点IP地址操作系统配置
server192.168.174.150centos7.92G2核
client1192.168.174.151centos7.92G2核
client2192.168.174.152centos7.92G2


ansible清单文件内容如下

[clients_all]
server
client1
client2
[clients_master]
server
[clients_client]
client1
client2

2.配置yum源

---
- hosts: clients_allgather_facts: novars:tasks:- name: 配置本地yum源block:- name: 挂载/dev/cdrommount:src: /dev/cdrompath: /mnt/cdromfstype: iso9660opts: defaultsstate: mounted- name: 删除\/dev\/cdrom行lineinfile:path: /etc/fstabregexp: '^\/dev\/cdrom'state: absent- name: 修改/etc/fstab配置文件lineinfile:path: /etc/fstabline: '/dev/cdrom /mnt/cdrom iso9660 defaults  0  0'insertafter: EOF- name: 创建文件并且清空文件shell: 'echo "" > /etc/yum.repos.d/centos-local.repo'- name: 修改配置文件centos-local.repoblockinfile:path: /etc/yum.repos.d/centos-local.repo# block: |表示将文本块的内容作为纯文本进行处理,不进行任何额外的格式化或处理block: |[centos7.9]name=centos7.9baseurl=file:///mnt/cdromenabled=1gpgcheck=0create: yesmarker: '#{mark} centos7.9'- name: 清理yum缓存,列出yum源列表shell: yum clean all && yum repolist- name: 配置远程阿里源block:- name: yum安装wgetyum:name: wget- name: 下载centosyum文件get_url:dest: /etc/yum.repos.d/CentOS-Base.repourl: http://mirrors.aliyun.com/repo/Centos-7.repo- name: 配置yum扩展源block:- name: yum安装epel-releaseyum:name: epel-release- name: 清理yum缓存,列出yum源列表shell: yum clean all && yum repolist

3.安装必要工具:

- hosts: clients_allgather_facts: novars:tasks:- name: 安装必要工具yum:name: bash-completion,vim,net-tools,tree,psmisc,lrzsz,dos2unix

4.禁止防火墙和selinux:

- hosts: clients_allgather_facts: novars:tasks:- name: 禁止使用selinuxselinux:state: disabled- name: 禁用firewalld服务service:name: firewalldstate: stoppedenabled: false- name: 禁用iptables服务service:name: iptablesstate: stoppedenabled: falseregister: service_statusignore_errors: True- name: 处理服务不存在的情况fail:msg: "服务不存在"when: service_status is failed

5.chrony时间同步

- hosts: clients_allgather_facts: novars:tasks:- name: 在所有节点使用yum安装chronyyum:name: chrony- name: 开机自启动,并重启chrony服务service:name: chronydstate: restartedenabled: true
- hosts: clients_mastergather_facts: novars:tasks:- name: 修改master节点chrony.confblock:- name: 修改同步IP地址范围lineinfile:path: /etc/chrony.confregexp: '^#allow 192.168.0.0\/16'line: 'allow 192.168.174.0/24'backrefs: yes- name: 修改同步层数lineinfile:path: /etc/chrony.confregexp: '^#local stratum 10'line: 'local stratum 10'backrefs: yes- name: 开机自启动,并重启chrony服务service:name: chronydstate: restartedenabled: true- name: 开启主节点时间同步shell: timedatectl set-ntp true
- hosts: clients_clientgather_facts: novars:tasks:- name: 修改master节点chrony.confblock:- name: 删除旧的时间同步服务器地址lineinfile:path: /etc/chrony.confregexp: '^server'state: absent- name: 添加新的时间同步服务器地址lineinfile:path: /etc/chrony.confline: 'server 192.168.174.150 iburst'insertbefore: '^.*\bline2\b.*$'- name: 开机自启动,并重启chrony服务service:name: chronydstate: restartedenabled: true- name: 开启主节点时间同步shell: timedatectl set-ntp true- name: 等待5秒shell: sleep 5- name: 查看同步状况shell: chronyc sources -v | sed -n '/^\^\*/p'register: command_output# 将打印的结果重定向到command_output,并输出到控制台- name: chronyc sources -v输出debug:var: command_output.stdout_lines

6.禁用swap分区,修改linux的内核参数,配置ipvs功能

- hosts: clients_allgather_facts: novars:tasks:- name: 禁用swap分区lineinfile:path: /etc/fstabregexp: '^\/dev\/mapper\/centos-swap'line: '#/dev/mapper/centos-swap swap                    swap    defaults        0 0'backrefs: yes- name: 修改linux的内核参数block:- name: 编辑/etc/sysctl.d/kubernetes.conf,添加网桥过滤和地址转发功能blockinfile:path: /etc/sysctl.d/kubernetes.confblock: |net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1create: yesmarker: '#{mark} kubernetes'- name: 重新加载配置shell: sysctl -p- name: 加载网桥过滤模块shell: modprobe br_netfilter- name: 查看网桥过滤模块是否加载成功shell: lsmod | grep br_netfilterregister: lsmod_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: lsmod | grep br_netfilter输出debug:var: lsmod_output.stdout_lines- name: 配置ipvs功能block:- name: 安装ipset和ipvsadmyum:name: ipset,ipvsadm- name: 添加需要加载的模块写入脚本文件blockinfile:path: /etc/sysconfig/modules/ipvs.modulesblock: |#! /bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4create: yesmarker: '#{mark} ipvs'- name: 为脚本文件添加执行权限file:path: /etc/sysconfig/modules/ipvs.modulesmode: '0755'- name: 执行脚本文件script: /bin/bash /etc/sysconfig/modules/ipvs.modules- name: 查看对应的模块是否加载成功shell: lsmod | grep -e ip_vs -e nf_conntrack_ipv4register: lsmod_ipv4_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: lsmod | grep -e ip_vs -e nf_conntrack_ipv4输出debug:var: lsmod_ipv4_output.stdout_lines- name: 重启linux服务reboot:

7.安装Docker

- hosts: clients_allgather_facts: novars:tasks:- name: 修改linux的内核参数block:- name: 添加docker镜像到本地get_url:dest: /etc/yum.repos.d/docker-ce.repourl: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo- name: 然后输入命令shell: yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7- name: 修改配置文件file:path: /etc/dockerstate: directory- name: 修改/etc/docker/daemon.jsonblockinfile:path: /etc/sysconfig/modules/ipvs.modulesblock: |{"storage-driver": "devicemapper","exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://ja9e22yz.mirror.aliyuncs.com"]}create: yesmarker: '#{mark} daemon'- name: 修改/etc/sysconfig/dockerblockinfile:path: /etc/sysconfig/dockerblock:OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'create: yesmarker: '#{mark} docker'- name: 重启docker服务,并设置开机自启service:name: dockerstate: restartedenabled: true

8.安装k8s组件

- hosts: clients_allgather_facts: novars:tasks:- name: 安装k8s组件block:- name: 配置k8syum仓库blockinfile:path: /etc/yum.repos.d/kubernetes.repoblock: |[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgcreate: yesmarker: '#{mark} kubernetes'- name: 安装kubeadm、kubelet和kubectlshell: yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y- name: 编辑/etc/sysconfig/kubelet,配置kubelet的cgroupblockinfile:path: /etc/yum.repos.d/kubernetes.repoblock:KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"KUBE_PROXY_MODE="ipvs"create: yesmarker: '#{mark} kubernetes'- name: 设置kubelet开机自启service:name: kubeletstate: startedenabled: true

9.准备集群镜像

- hosts: clients_allgather_facts: novars:images:                 # 定义了一个镜像列表- kube-apiserver:v1.17.4- kube-controller-manager:v1.17.4- kube-scheduler:v1.17.4- kube-proxy:v1.17.4- pause:3.1- etcd:3.4.3-0- coredns:1.6.5tasks:- name: 拉取镜像shell: docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }}with_items: "{{ images }}"          # 循环定义的列表- name: 给镜像打标签shell: docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }} k8s.gcr.io/{{ item }}with_items: "{{ images }}"- name: 删除镜像shell: docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }}with_items: "{{ images }}"

10.集群初始化

- hosts: clients_mastergather_facts: novars:- apiserver_address: 192.168.174.150tasks:- name: 在 master 节点,集群初始化block:- name: kubeadm initshell:kubeadm init \--kubernetes-version=v1.17.4 \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12 \--apiserver-advertise-address={{ apiserver_address }} | \grep -Eo '(--token.*|--discovery-token-ca-cert-hash.*)' | awk -F ' ' '{print \$2}'# 将打印的结果重定向到lsmod_outputregister: kubeadm_init_output- name: 提取token和discovery-token-ca-cert-hash值set_fact:token: "{{ kubeadm_init_output.stdout_lines[0] }}"discovery_token_ca_cert_hash: "{{ kubeadm_init_output.stdout_lines[1] }}"- name: 将token和discovery_token_ca_cert_hash写入到文件中blockinfile:path: $HOME/kubeadm_init.yamlblock: |token: {{ token }}discovery_token_ca_cert_hash: {{ discovery_token_ca_cert_hash }}create: yesmarker: '#{mark} file'- name: 将token和discovery_token_ca_cert_hash的文件给ansible主机fetch:src: $HOME/kubeadm_init.yamldest: $HOME- name: kubeadm init输出debug:var: token,discovery_token_ca_cert_hash- name: 创建必要目录$HOME/.kubefile:path: $HOME/.kubestate: directory- name: 复制/etc/kubernetes/admin.confshell: cp -i /etc/kubernetes/admin.conf $HOME/.kube/config- name: 获取当前用户的id值shell: id -unregister: current_user- name: 获取当前用户组的id值shell: id -gnregister: current_group- name: 修改文件$HOME/.kube/config的所属主和组file:path: $HOME/.kube/configstate: touch# 这里register的值需要stdout方法,不然输出会加上[]owner: "{{ current_user.stdout }}"group: "{{ current_group.stdout }}"
# 在 node 节点,将node节点加入集群
- hosts: clients_clientvars:apiserver_address: 192.168.174.150vars_files: $HOME/server/root/kubeadm_init.yamltasks:- name: 在 node 节点,将node节点加入集群# 如果想获取到上一个项目中定义的fact变量需要开启gather_facts收集shell:kubeadm join {{ apiserver_address }}:6443 --token {{ token }} \--discovery-token-ca-cert-hash {{ discovery_token_ca_cert_hash }}
# 在 master 节点,在查看集群状态
- hosts: clients_mastergather_facts: novars:tasks:- name: 在 master 节点,在查看集群状态shell: kubectl get nodesregister: kubectl_nodes_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: kubectl get nodes输出debug:var: kubectl_nodes_output.stdout_lines

11.安装网络插件

- hosts: clients_mastergather_facts: novars:tasks:- name: 安装网络插件block:- name: 获取fannel的配置文件get_url:dest: $HOMEurl: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml- name: 部署flannel网络shell: kubectl apply -f $HOME/kube-flannel.yml && sleep 60- name: 过一分钟左右查看各节点状态,变为Ready说明网络打通了shell: kubectl get nodesregister: kubectl_nodes_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: kubectl get nodes输出debug:var: kubectl_nodes_output.stdout_lines- name: 查看所有pod是否变为Runningshell: kubectl get pod --all-namespacesregister: kubectl_pod_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: kubectl get pod --all-namespaces输出debug:var: kubectl_pod_output.stdout_lines

12.完整yaml文件:
 

# 1.配置yum源
---
- hosts: clients_allgather_facts: novars:tasks:- name: 配置本地yum源block:- name: 挂载/dev/cdrommount:src: /dev/cdrompath: /mnt/cdromfstype: iso9660opts: defaultsstate: mounted- name: 删除\/dev\/cdrom行lineinfile:path: /etc/fstabregexp: '^\/dev\/cdrom'state: absent- name: 修改/etc/fstab配置文件lineinfile:path: /etc/fstabline: '/dev/cdrom /mnt/cdrom iso9660 defaults  0  0'insertafter: EOF- name: 创建文件并且清空文件shell: 'echo "" > /etc/yum.repos.d/centos-local.repo'- name: 修改配置文件centos-local.repoblockinfile:path: /etc/yum.repos.d/centos-local.repo# block: |表示将文本块的内容作为纯文本进行处理,不进行任何额外的格式化或处理block: |[centos7.9]name=centos7.9baseurl=file:///mnt/cdromenabled=1gpgcheck=0create: yesmarker: '#{mark} centos7.9'- name: 清理yum缓存,列出yum源列表shell: yum clean all && yum repolist- name: 配置远程阿里源block:- name: yum安装wgetyum:name: wget- name: 下载centosyum文件get_url:dest: /etc/yum.repos.d/CentOS-Base.repourl: http://mirrors.aliyun.com/repo/Centos-7.repo- name: 配置yum扩展源block:- name: yum安装epel-releaseyum:name: epel-release- name: 清理yum缓存,列出yum源列表shell: yum clean all && yum repolist
# 2.安装必要工具:
- hosts: clients_allgather_facts: novars:tasks:- name: 安装必要工具yum:name: bash-completion,vim,net-tools,tree,psmisc,lrzsz,dos2unix
# 3.禁止防火墙和selinux:
- hosts: clients_allgather_facts: novars:tasks:- name: 禁止使用selinuxselinux:state: disabled- name: 禁用firewalld服务service:name: firewalldstate: stoppedenabled: false- name: 禁用iptables服务service:name: iptablesstate: stoppedenabled: falseregister: service_statusignore_errors: True- name: 处理服务不存在的情况fail:msg: "服务不存在"when: service_status is failed
# 4.chrony时间同步
- hosts: clients_allgather_facts: novars:tasks:- name: 在所有节点使用yum安装chronyyum:name: chrony- name: 开机自启动,并重启chrony服务service:name: chronydstate: restartedenabled: true
- hosts: clients_mastergather_facts: novars:tasks:- name: 修改master节点chrony.confblock:- name: 修改同步IP地址范围lineinfile:path: /etc/chrony.confregexp: '^#allow 192.168.0.0\/16'line: 'allow 192.168.174.0/24'backrefs: yes- name: 修改同步层数lineinfile:path: /etc/chrony.confregexp: '^#local stratum 10'line: 'local stratum 10'backrefs: yes- name: 开机自启动,并重启chrony服务service:name: chronydstate: restartedenabled: true- name: 开启主节点时间同步shell: timedatectl set-ntp true
- hosts: clients_clientgather_facts: novars:tasks:- name: 修改master节点chrony.confblock:- name: 删除旧的时间同步服务器地址lineinfile:path: /etc/chrony.confregexp: '^server'state: absent- name: 添加新的时间同步服务器地址lineinfile:path: /etc/chrony.confline: 'server 192.168.174.150 iburst'insertbefore: '^.*\bline2\b.*$'- name: 开机自启动,并重启chrony服务service:name: chronydstate: restartedenabled: true- name: 开启主节点时间同步shell: timedatectl set-ntp true- name: 等待5秒shell: sleep 5- name: 查看同步状况shell: chronyc sources -v | sed -n '/^\^\*/p'register: command_output# 将打印的结果重定向到command_output,并输出到控制台- name: chronyc sources -v输出debug:var: command_output.stdout_lines
# 5.禁用swap分区,修改linux的内核参数,配置ipvs功能
- hosts: clients_allgather_facts: novars:tasks:- name: 禁用swap分区lineinfile:path: /etc/fstabregexp: '^\/dev\/mapper\/centos-swap'line: '#/dev/mapper/centos-swap swap                    swap    defaults        0 0'backrefs: yes- name: 修改linux的内核参数block:- name: 编辑/etc/sysctl.d/kubernetes.conf,添加网桥过滤和地址转发功能blockinfile:path: /etc/sysctl.d/kubernetes.confblock: |net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1create: yesmarker: '#{mark} kubernetes'- name: 重新加载配置shell: sysctl -p- name: 加载网桥过滤模块shell: modprobe br_netfilter- name: 查看网桥过滤模块是否加载成功shell: lsmod | grep br_netfilterregister: lsmod_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: lsmod | grep br_netfilter输出debug:var: lsmod_output.stdout_lines- name: 配置ipvs功能block:- name: 安装ipset和ipvsadmyum:name: ipset,ipvsadm- name: 添加需要加载的模块写入脚本文件blockinfile:path: /etc/sysconfig/modules/ipvs.modulesblock: |#! /bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4create: yesmarker: '#{mark} ipvs'- name: 为脚本文件添加执行权限file:path: /etc/sysconfig/modules/ipvs.modulesmode: '0755'- name: 执行脚本文件script: /bin/bash /etc/sysconfig/modules/ipvs.modules- name: 查看对应的模块是否加载成功shell: lsmod | grep -e ip_vs -e nf_conntrack_ipv4register: lsmod_ipv4_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: lsmod | grep -e ip_vs -e nf_conntrack_ipv4输出debug:var: lsmod_ipv4_output.stdout_lines
#        - name: 重启linux服务
#          reboot:
# 6.安装Docker
- hosts: clients_allgather_facts: novars:tasks:- name: 修改linux的内核参数block:- name: 添加docker镜像到本地get_url:dest: /etc/yum.repos.d/docker-ce.repourl: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo- name: 然后输入命令shell: yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7- name: 修改配置文件file:path: /etc/dockerstate: directory- name: 修改/etc/docker/daemon.jsonblockinfile:path: /etc/sysconfig/modules/ipvs.modulesblock: |{"storage-driver": "devicemapper","exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://ja9e22yz.mirror.aliyuncs.com"]}create: yesmarker: '#{mark} daemon'- name: 修改/etc/sysconfig/dockerblockinfile:path: /etc/sysconfig/dockerblock:OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'create: yesmarker: '#{mark} docker'- name: 重启docker服务,并设置开机自启service:name: dockerstate: restartedenabled: true
# 7.安装k8s组件
- hosts: clients_allgather_facts: novars:tasks:- name: 安装k8s组件block:- name: 配置k8syum仓库blockinfile:path: /etc/yum.repos.d/kubernetes.repoblock: |[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgcreate: yesmarker: '#{mark} kubernetes'- name: 安装kubeadm、kubelet和kubectlshell: yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y- name: 编辑/etc/sysconfig/kubelet,配置kubelet的cgroupblockinfile:path: /etc/yum.repos.d/kubernetes.repoblock:KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"KUBE_PROXY_MODE="ipvs"create: yesmarker: '#{mark} kubernetes'- name: 设置kubelet开机自启service:name: kubeletstate: startedenabled: true
# 8.准备集群镜像
- hosts: clients_allgather_facts: novars:images:                 # 定义了一个镜像列表- kube-apiserver:v1.17.4- kube-controller-manager:v1.17.4- kube-scheduler:v1.17.4- kube-proxy:v1.17.4- pause:3.1- etcd:3.4.3-0- coredns:1.6.5tasks:- name: 拉取镜像shell: docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }}with_items: "{{ images }}"          # 循环定义的列表- name: 给镜像打标签shell: docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }} k8s.gcr.io/{{ item }}with_items: "{{ images }}"- name: 删除镜像shell: docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/{{ item }}with_items: "{{ images }}"
# 9.集群初始化
- hosts: clients_mastergather_facts: novars:- apiserver_address: 192.168.174.150tasks:- name: 在 master 节点,集群初始化block:- name: kubeadm initshell:kubeadm init \--kubernetes-version=v1.17.4 \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12 \--apiserver-advertise-address={{ apiserver_address }} | \grep -Eo '(--token.*|--discovery-token-ca-cert-hash.*)' | awk -F ' ' '{print \$2}'# 将打印的结果重定向到lsmod_outputregister: kubeadm_init_output- name: 提取token和discovery-token-ca-cert-hash值set_fact:token: "{{ kubeadm_init_output.stdout_lines[0] }}"discovery_token_ca_cert_hash: "{{ kubeadm_init_output.stdout_lines[1] }}"- name: 将token和discovery_token_ca_cert_hash写入到文件中blockinfile:path: $HOME/kubeadm_init.yamlblock: |token: {{ token }}discovery_token_ca_cert_hash: {{ discovery_token_ca_cert_hash }}create: yesmarker: '#{mark} file'- name: 将token和discovery_token_ca_cert_hash的文件给ansible主机fetch:src: $HOME/kubeadm_init.yamldest: $HOME- name: kubeadm init输出debug:var: token,discovery_token_ca_cert_hash- name: 创建必要目录$HOME/.kubefile:path: $HOME/.kubestate: directory- name: 复制/etc/kubernetes/admin.confshell: cp -i /etc/kubernetes/admin.conf $HOME/.kube/config- name: 获取当前用户的id值shell: id -unregister: current_user- name: 获取当前用户组的id值shell: id -gnregister: current_group- name: 修改文件$HOME/.kube/config的所属主和组file:path: $HOME/.kube/configstate: touch# 这里register的值需要stdout方法,不然输出会加上[]owner: "{{ current_user.stdout }}"group: "{{ current_group.stdout }}"
# 在 node 节点,将node节点加入集群
- hosts: clients_clientvars:apiserver_address: 192.168.174.150vars_files: $HOME/server/root/kubeadm_init.yamltasks:- name: 在 node 节点,将node节点加入集群# 如果想获取到上一个项目中定义的fact变量需要开启gather_facts收集shell:kubeadm join {{ apiserver_address }}:6443 --token {{ token }} \--discovery-token-ca-cert-hash {{ discovery_token_ca_cert_hash }}
# 在 master 节点,在查看集群状态
- hosts: clients_mastergather_facts: novars:tasks:- name: 在 master 节点,在查看集群状态shell: kubectl get nodesregister: kubectl_nodes_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: kubectl get nodes输出debug:var: kubectl_nodes_output.stdout_lines
# 9.安装网络插件
- hosts: clients_mastergather_facts: novars:tasks:- name: 安装网络插件block:- name: 获取fannel的配置文件get_url:dest: $HOMEurl: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml- name: 部署flannel网络shell: kubectl apply -f $HOME/kube-flannel.yml && sleep 60- name: 过一分钟左右查看各节点状态,变为Ready说明网络打通了shell: kubectl get nodesregister: kubectl_nodes_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: kubectl get nodes输出debug:var: kubectl_nodes_output.stdout_lines- name: 查看所有pod是否变为Runningshell: kubectl get pod --all-namespacesregister: kubectl_pod_output# 将打印的结果重定向到lsmod_output,并输出到控制台- name: kubectl get pod --all-namespaces输出debug:var: kubectl_pod_output.stdout_lines

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 在UploadEventService使用ThreadPoolManager线程管理传递数据给后台

Android 在UploadEventService使用ThreadPoolManager线程管理传递数据给后台,如何实现呢? 可以通过以下步骤使用ThreadPoolManager线程管理传递数据给后台: 创建一个ThreadPoolManager类来管理线程池,比如: public cl…

API测试:从入门到精通,干货满满,趣味无穷

一、引言 随着数字化时代的到来,应用程序接口(API)已经成为软件开发和交互的核心。API测试是确保API质量和稳定性的关键环节。本文将带你了解API测试的基本概念、方法和技巧,让你在轻松愉快的氛围中掌握这一技能。 二、API测试概…

01-C++基础

c概述 1. 概述 1.1 简介 “c” 中的 来自于 c 语言中的递增运算符,该运算符将变量加 1。 c起初也叫”c with class”。通过名称表明, c是对 c 的扩展,因此 c是 c 语言的超集,这意味着 任何有效的 c 程序都是有效的 c程序。 c程…

《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

我的隐私计算学习——匿踪查询

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。 (一)PIR的介绍 ​ 匿踪查询,即隐私信息检索(Private InformationRetrieval,PIR),是安全多方计算…

2012-12-12 下载ndk编译出so和可执行文件,放到android 真机运行,包含源码。

一、下载ndk链接NDK 下载 | Android NDK | Android Developers 二、解压ndk后得到下面的文件,里面包含ndk-build.cmd,这个是用来编译的。 三、Android.mk和C源码。完整源码下载路径https://download.csdn.net/download/qq_37858386/88622702 3.1 A…

MBA-论文说-历年考题参考

论说文∶根据下述材料,写-篇 700 字左右的论说文,题目自拟。 2015 孟子曾引用阳虎的话:"为富,不仁矣;为仁,不富矣,"(《孟子滕文公上》)这段话表明了古人对当时社会上为富…

k8s如何部署seata(分布式事务)?(第一篇)

k8s如何部署seata(分布式事务)? 官方传送门https://seata.io/zh-cn/ 快速入门SEATA Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站…

分布式配置中心SpringCloudConfig

1 简介 在分布式系统中,由于服务数量较多,配置文件分布在不同的微服务项目中,管理不方便。为了方便对配置文件的集中管理,需要使用分布式配置中心组件。在SpringCloud中,提供了SpringCloud Config,它支持将…

网络安全学习之信息泄露

一、背景以及泄露途径 通常我们会对数据进行备份,比如我们在发布网站的时候会对将要替换的版本进行备份。我们在对重要文件进行修改的时候我们也需要进行备份,如果我们对备份或缓存的文件或信息为做好管理,很容易就导致我们的敏感信息泄露。…

《Linux C编程实战》笔记:实现自己的ls命令

关键函数的功能及说明 1.void display_attribute(struct stat buf,char *name) 函数功能:打印文件名为name的文件信息,如 含义分别为:文件的类型和访问权限,文件的链接数,文件的所有者,文件所有者所属的组…

后端项目全局异常处理-使用RuntimeException自定义异常异常分类简单举例

接上篇:后端项目操作数据库-中枢组件Service调用Mapper 自定义异常: 手动抛出异常,为了后续统一捕获,需要异常自定义; 如:当使用抛出异常的方式表示“操作失败”时,为了后续统一捕获&#xff0c…

灯具照明行业MES/开源mes/灯具行业免费MES

一、万界星空科技开源MES系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理,车间基础数据管理,计划管…

Chapter 7 - 3. Congestion Management in Ethernet Storage Networks以太网存储网络的拥塞管理

Pause Threshold for Long Distance Links长途链路的暂停阈值 This section uses the following basic concepts: 本节使用以下基本概念: Bit Time (BT): It is the time taken to transmit one bit. It is the reciprocal of the bit rate. For example, BT of a 10 GbE po…

PHP中如何处理用户输入中的特殊字符?

在PHP中,处理用户输入中的特殊字符是很重要的安全措施,以防止恶意用户通过输入特殊字符来进行攻击,比如SQL注入、跨站脚本攻击(XSS)等。以下是一些处理用户输入中特殊字符的常见方法: htmlspecialchars函数…

喝葡萄酒时观酒闻香尝味究竟有什么用?

对许多人来说,在品尝葡萄酒时能发现大多数人闻不到的香气和尝不到的味道似乎是一种神奇的能力。其他人则认为这是学究式葡萄酒爱好者过于活跃的想象,或者是保持葡萄酒鉴赏精英声誉的一种方式,但两者都不是。 部分是艺术,部分是科…

目前最火的大模型训练框架 DeepSpeed 详解来了

目前,大模型的发展已经非常火热,关于大模型的训练、微调也是各个公司重点关注方向,但是大模型训练的痛点是模型参数过大,动辄上百亿,如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这项工作。…

解锁RocketMQ秘籍:如何保障消息顺序性?

嗨,小伙伴们!小米在这里啦!今天我们要聊的话题是社招面试中一个经典而又百思不得其解的问题——“RocketMQ如何保证顺序性?”不用担心,小米来给你揭秘RocketMQ的秘密武器,让你轻松过关面试大关!…

MBA-数学题概念和公式

{}公差大于零的等差数列:多个数字组成的数列,两两之间差相等,且后值减前值大于0,如:{-2,0,2,4}为公差数列为2的等差数列.因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,10的因数为 2和5圆柱体表面积 2πr 2πrh球体表名…

生产环境_Apache Spark技术大牛的实践:使用DataFrame API计算唯一值数量并展示技术(属性报告)

业务背景 给前端提供算法集成好的数据,对算法处理后的数据进行进一步删选展示 可以使用下面代码运行一下看看结果,听有趣的,我写的代码中计算了不同字段的值的数量,并生成了一个显示字符串来描述这些数据的分布情况然后使用"…