环境要求:
由于二进制安装的k8s: 步骤繁琐,于是就有大佬用ansibe和saltstack来简化二进制安装流程
ansible 一键自动化安装 https://github.com/easzlab/kubeasz
saltstack 一键自动化安装 https://github.com/unixhot/salt-k8s
kubeadm安装k8s: 需要google官方的docker镜像,需要解决网络问题
机器名 | ip地址 | cpu和内存要求 |
---|---|---|
kubernetes-master | 10.0.0.11 | 2c4g(关闭swap) |
kubernetes-node1 | 10.0.0.12 | 2c4g(关闭swap) |
安装指定版本docker
#所有节点
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum list docker-ce --showduplicates
上传docker_rpm_18.09.tar.gz包
tar xf docker_rpm_18.09.tar.gz
cd docker_rpm_18.09/
yum localinstall *.rpm -y
systemctl start docker && systemctl enable docker
docker version
安装kubeadm
#所有节点
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes baseurl=https://mirror.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 EOF tar xf kubeadm_rpm_1.15.5.tar.gz cd kubeadm_rpm_1.15.5/ yum localinstall *.rpm -y systemctl enable kubelet && systemctl start kubelet kubeadm version
使用kubeadm初始化k8s集群
#所有节点
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
#关闭swap
swapoff -a
vim /etc/fstab
注释掉swap一行
#控制节点上运行,注意最后的输出
wget http://192.168.18.251/file/docker_k8s_adm1.15.tar.gz
docker load -i docker_k8s_adm1.15.tar.gz
kubeadm init --kubernetes-version=v1.15.5 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.254.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
给k8s集群加入node节点:
#node节点上执行前面控制节点提示的加入命令
kubeadm join 10.0.0.11:6443 --token w3vgyr.xdwk6apd7nu5jkax --discovery-token-ca-cert-hash sha256:db964d63f7ee785a0881e0a79cd9b5b523449982a19f058edbfe8c2c72c5b912
给k8s集群配置网络插件
#控制节点:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#修改网段范围为
kubectl create -f kube-flannel.yml
kubectl get all -n kube-system
kubectl get nodes
kubectl自动补全
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc