Ansible部署k8s集群
2023-06-13 09:11:06 时间
安装Ansible
# 更换清华源
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
# 更换阿里epel
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install vim wget ansible
管理机配置host
vim /etc/hosts
172.16.87.100 kubernetes-master
172.16.87.101 kubernetes-node1
172.16.87.102 kubernetes-node2
Ansible添加主机节点
vim /etc/ansible/hosts
[k8s_all]
172.16.87.100
172.16.87.101
172.16.87.102
[k8s_master]
172.16.87.100
[k8s_node]
172.16.87.101
172.16.87.102
更改其他主机host
vim alter_hosts.yaml
- hosts: k8s_node
remote_user: root
tasks:
- name: backup /etc/hosts
shell: mv /etc/hosts /etc/host_bak
- name: copy localhosts file to remote
copy: src=/etc/hosts dest=/etc/ owner=root group=root mode=0644
ansible-playbook alter_hosts.yaml # 执行命令
更改完成后请重启主机
安装Docker
vim install_docker.yaml
- hosts: k8s_all
remote_user: root
tasks:
- name: install dependencies
yum: state=installed
args:
name: ['ntp','yum-utils','device-mapper-persistent-data','lvm2']
- name: Add docker-repo
shell: yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
- name: Install docker
yum: name=docker-ce
- name: Start docker
shell: systemctl start docker;systemctl enable docker
info.sh
#!/bin/bash
# 防火墙
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
#禁用swap
swapoff -a
echo "vm.swappiness =0" >> /etc/sysctl.conf
#修改内核参数
modprobe br_netfilter
cat <<EOF > /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
#重新加载配置文件
sysctl -p
#配置阿里k8s yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#更新缓存
yum clean all -y && yum makecache -y && yum repolist -y
# 部署镜像
docker pull bluersw/kube-apiserver:v1.16.2
docker pull bluersw/kube-controller-manager:v1.16.2
docker pull bluersw/kube-scheduler:v1.16.2
docker pull bluersw/kube-proxy:v1.16.2
docker pull bluersw/pause:3.1
docker pull bluersw/etcd:3.3.15-0
docker pull bluersw/coredns:1.6.2
docker pull bluersw/flannel:v0.11.0-amd64
# 还原
docker tag bluersw/kube-apiserver:v1.16.2 k8s.gcr.io/kube-apiserver:v1.16.2
docker tag bluersw/kube-controller-manager:v1.16.2 k8s.gcr.io/kube-controller-manager:v1.16.2
docker tag bluersw/kube-scheduler:v1.16.2 k8s.gcr.io/kube-scheduler:v1.16.2
docker tag bluersw/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2
docker tag bluersw/pause:3.1 k8s.gcr.io/pause:3.1
docker tag bluersw/etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker tag bluersw/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2
docker tag bluersw/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
docker images | grep bluersw | awk '{print "docker rmi ",$1":"$2}' | sh -x
deploy_master.yaml
- hosts: k8s_master
remote_user: root
vars:
kube_version: 1.16.2
k8s_version: v1.16.2
k8s_master: 172.16.87.100
tasks:
- name: Exec Info
script: ./info.sh
- name: install Kubernetes
yum: name={{item}} state=present
with_items:
- kubectl-{{kube_version}}
- kubeadm-{{kube_version}}
- kubelet-{{kube_version}}
- name: Init Kubernetes
shell: kubeadm init --kubernetes-version={{k8s_version}} --apiserver-advertise-address={{k8s_master}} --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16 --token-ttl 0
- name: config kube
shell: mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && chown $(id -u):$(id -g) $HOME/.kube/config
- name: Apply flannel
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- name: get join command
shell: kubeadm token create --print-join-command
register: join_command
- name: show join command
debug: var=join_command verbosity=0
deploy_node.yaml
- hosts: k8s_node
remote_user: root
vars:
kube_version: 1.16.2
tasks:
- name: Exec Info
script: ./info.sh
- name: install Kubernetes
yum: name={{item}} state=present
with_items:
- kubeadm-{{kube_version}}
- kubelet-{{kube_version}}
- name: start kubelet
shell: systemctl enable kubelet && systemctl start kubelet
- name: join cluster
shell: kubeadm join 172.16.87.100:6443 --token vwsx61.rxzjukcfdnd2zob2 --discovery-token-ca-cert-hash sha256:cd53a381768b059f822f4d85f21041c73bf9c67e5b4f61eafbdfe6abb9ac65cb
- Token:需要到Master查看Ansible返回的执行信息
验证集群
[root@kubernetes-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
kubernetes-master Ready master 14m v1.16.2
kubernetes-node1 Ready <none> 5m1s v1.16.2
kubernetes-node2 Ready <none> 6m47s v1.16.2
相关文章
- Rancher K8S 集群子网规划
- K8S-1.15.1版本部署
- K8s集群环境搭建
- 完美,这份七牛大神在线翻译国外大牛精简K8S学习笔记
- 部署k8s集群(k8s集群搭建详细实践版)
- 你能给大家解释一下k8s里面五花八门的各种port吗?
- 轻量高可用的 K8s 集群搭建方案:MicroK8s
- k8s 集群容量分析工具 - kluster-capacity
- Sentry + K8S 云原生分布式 Service Mesh 微服务实战,自建容器化中间件集群服务
- K8S 生态周报| Sigstore 正式 GA
- 二进制安装Kubernetes(k8s) v1.26.0 IPv4/IPv6双栈
- K8S 生态周报| 集群中应用正常但探针失败,如何解决?
- 必知必会,7 张图轻松理解 K8S 集群内服务通信
- K8s根本甩不掉Docker,原因一说就懂
- Ansible自动化部署K8S集群
- k9s:你没看错,这是一个加速 k8s 集群管理的工具
- k8s重要概念及部署k8s集群(一)
- 使用K8s部署Oracle,裁剪应用复杂性(k8s 部署oracle)
- K8S上简易部署Oracle数据库(k8s上部署oracle)
- Redis集群助力Kubernetes实现更强大的可扩展性(redis集群与k8s)
- 在Kubernetes上快速部署Redis集群(redis集群k8s部署)