准备节点:
master | 192.168.1.21 | 2CPU,2G内存 |
node-0001 | 192.168.1.31 | 2CPU,2G内存 |
node-0002 | 192.168.1.32 | 2CPU,2G内存 |
node-0003 | 192.168.1.33 | 2CPU,2G内存 |
registry | 192.168.1.100 | 1CPU,1G内存 |
master部署ansbible
vim install_ansible.sh
#!/bin/bash
#配置yum源为阿里云
cd /etc/yum.repos.d/
#备份自带的yum源
mv CentOS-Base.repo CentOS-Base.repo.backup
#下载阿里云yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum -y install ansible
[root@master ~]#chmod +x install_ansible.sh
[root@master ~]#./instatll_ansible.sh
设置免密
[root@master ~]#ssh-copy-id root@192.168.1.31
[root@master ~]#ssh-copy-id root@192.168.1.32
[root@master ~]#ssh-copy-id root@192.168.1.33
[root@master ~]#ssh-copy-id root@192.168.1.100
cat /etc/hosts 在master上的/etc/hosts文件中添加k8s服务器节点信息
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.21 master
192.168.1.31 node-0001
192.168.1.32 node-0002
192.168.1.33 node-0003
192.168.1.100 registry
在masteer服务器上的/etc/ansible/hosts文件中添加k8s服务器节点
[root@master ~]# vim /etc/ansible/hosts
[k8s-all]
192.168.1.21
192.168.1.31
192.168.1.32
192.168.1.33
192.168.1.100
[master]
192.168.1.21
[nodes]
192.168.1.31
192.168.1.32
[registry]
192.168.1.100
[root@master ~]# ansible k8s-all -m ping
修改k8s集群各节点/etc/hosts
vim cat hosts_playbook.yml
---
- hosts: nodes
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
[root@master ~]# ansible-playbook hosts_playbook.yml
安装镜像仓库 192.168.1.100
vim install_registry.yml
---
- hosts: registry
remote_user: root
tasks:
- name: install_registry
yum: name=docker-distribution state=present
- name: name: start registry
shell: systemctl enable --now docker-distribution
拷贝云盘 registry/myos目录 到 仓库服务器
[root@registry ~]# cd myos
[root@registry ~]# chmod 755 init-img.sh
[root@registry ~]# ./init-img.sh
[root@registry ~]# curl http://192.168.1.100:5000/v2/myos/tags/list
{"name":"myos","tags":["nginx","php-fpm","v1804","httpd"]}
安装Docker
cat install_docker_playbook.yml
- hosts: k8s-all
remote_user: root
vars:
docker_version: 18.09.2
tasks:
- name: install dependencies
shell: yum install -y yum-utils device-mapper-persistent-data lvm2
- name: 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-{
{docker_version}} state=present
- name: start docker
shell: systemctl start docker && systemctl enable docker
[root@master ~]# vim /etc/ansible/ansible.cfg
deprecation_warnings = false ## 179默认是true,并且不生效
[root@master ~]# ansible-playbook install_docker_playbook.yml
selinux,禁用 swap,卸载 firewalld-*
cat before.sh
#!/bin/bash
#防火墙
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
#禁用swap
swapoff -a
#修改内核参数
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
#重新加载配置文件
sysctl --system
#配置阿里k8s yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-ley.gpg
https://packages.cloud.goodle.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
#更新缓存
yum clean all -y && yum makecache -y
#安装
yum -y install kubelet kubeadm kubectl docker-ce --disableexcludes=kubernetes
#设置仓库地址
mkdir -p /etc/docker
echo {
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://hub-mirror.c.163.com"],
"insecure-registries":["192.168.1.100:5000", "registry:5000"]
} > /etc/docker/daemon.json
#启动仓库
systemctl enable --now docker kubelet
镜像导入私有仓库
把云盘 kubernetes/v1.17.6/base-images 中的镜像拷贝到 master
cat images.sh
cd base-images/
#导入镜像
for i in *.tar.gz;do docker load -i ${i};done
#上传镜像仓库
docker images |awk '$2!="TA