目前本安装过程的系统初始化,初始化完成之后建议重启系统,后续会更新安装整个kubernetes的脚本
初始化操作
#/bin/bash
######################################################
# Written By:Shsnc
# Author:direnjie <direnjie@shsnc.com>
# Date:2019-11-01 01:32
#####################################################
echo "正在输出结果,请按回车键继续查看... ... ... ... ... ... ..."
{
echo "####################关闭防火墙和设置防火墙开机不自启#####################"
systemctl stop firewalld & systemctl disable firewalld
echo "###########################关闭selinux###################################"
sed -i 's/enforcing/disabled/g' /etc/selinux/config
sed -i 's/permissive/disabled/g' /etc/selinux/config
echo "##########################添加本地hosts##################################"
echo '192.168.136.134 pinpoint01' >> /etc/hosts
echo '192.168.217.135 pinpoint02' >> /etc/hosts
echo "###########################关闭swap分区#################################"
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
echo "###########################配置阿里源#####################################"
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y wget yum-utils
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
echo "##############################安装docker####################################"
yum install -y docker
systemctl start docker & systemctl enable docker
echo "#############################开始安装k8s组件#################################"
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet&& systemctl start kubelet
kubeadm config images list
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
echo "###########################开始设置docker镜像加速器#########################"
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://2df50eoy.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "###############################开始下载镜像#################################"
cat <<EOF > /opt/images.sh
# 基本组件
docker pull registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-apiserver:v1.16.2
docker pull registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-controller-manager:v1.16.2
docker pull registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-scheduler:v1.16.2
docker pull registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-proxy:v1.16.2
docker pull registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-etcd:3.3.15-0
docker pull registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-coredns:1.6.2
docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
# 修改tag
docker tag registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-apiserver:v1.16.2 k8s.gcr.io/kube-apiserver:v1.16.2
docker tag registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-scheduler:v1.16.2 k8s.gcr.io/kube-scheduler:v1.16.2
docker tag registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-controller-manager:v1.16.2 k8s.gcr.io/kube-controller-manager:v1.16.2
docker tag registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2
docker tag registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker tag registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-coredns:1.6.2 k8s.gcr.io/coredns:1.6.2
docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
## 删除镜像
docker rmi registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-apiserver:v1.16.2
docker rmi registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-controller-manager:v1.16.2
docker rmi registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-scheduler:v1.16.2
docker rmi registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-proxy:v1.16.2
docker rmi registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-etcd:3.3.15-0
docker rmi registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-pause:3.1
docker rmi registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-coredns:1.6.2
docker rmi mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
EOF
sh /opt/images.sh
} > /opt/err.log
以上操作在两个节点上都要进行,以下操作只在master上进行
初始化kubernetes
kubeadm init --kubernetes-version=1.16.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.136.134
为kubectl准备Kubeconfig文件
kubectl默认会在执行的用户家目录下面的.kube目录下寻找config文件。这里是将在初始化时[kubeconfig]步骤生成的admin.conf拷贝到.kube/config。
在该配置文件中,记录了API Server的访问地址,所以后面直接执行kubectl命令就可以正常连接到API Server中。
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown root.root /root/.kube/config
安装flannel 网络
下载docker镜像
docker pull jmgao1983/flannel:v0.11.0-amd64
下载 kube-flannel.yml 配置文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
替换kube-flannel.yml中的镜像名称
sed -i 's#quay.io/coreos/flannel:v0.11.0-amd64#jmgao1983/flannel:v0.11.0-amd64#g' kube-flannel.yml
运行下面命令安装flannel
kubectl apply -f kube-flannel.yml
查看node状态
kubectl -n kube-system get pod
or
kubectl get pods -A -o wide
如果全是runing代表成功
安装work节点
work节点执行完脚本,之后执行这个
kubeadm join 192.168.254.100:6443 --token eehowx.9lau2dfgsga63qgb --discovery-token-ca-cert-hash sha256:eeabf48bb9043f9517d9d4430dd4ea24f111f865e9d0383e24008b3510934214
将master节点/etc/kubernetes/admin.conf复制到work节点的/etc/kubernetes/下
scp /etc/kubernetes/admin.conf root@192.168.136.135:/etc/kubernetes/
和master节点一样执行如下命令
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown root.root /root/.kube/config