kubeadm部署k8s
准备3台虚拟机
master:192.168.116.129
node01:192.168.116.130
node02:192.168.116.131
以下操作三台虚拟机全部执行
修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname node02
修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.116.129
NETMASK=255.255.255.0
GATEWAY=192.168.116.2
DNS1=223.5.5.5
添加主机解析
vi /etc/hosts
192.168.116.129 master
192.168.116.130 node01
192.168.116.131 node02
配置master免密登录
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub root@node01
ssh-copy-id -i .ssh/id_rsa.pub root@node02
禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
时间同步
ntpdate ntp1.aliyun.com
禁用selinux
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
禁用swap
sed -i 's/.*swap.*/#&/' /etc/fstab
sysctl -p
开启ip转发
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
下载docker阿里源,安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version
修改docker配置文件
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://****.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker
配置k8s阿里源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
EOF
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
刷新缓存
yum makecache fast
创建k8s目录
mkdir /opt/k8s
cd /opt/k8s/
安装k8s组件
yum install kubelet-1.18.3 kubeadm-1.18.3 kubectl-1.18.3 -y
systemctl enable kubeadm
kubeadm version
在master节点执行:使用kubeadm init 初始化
kubeadm init --apiserver-advertise-address=192.168.116.129 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
安装完成之后按提示执行,并记录提示的node join指令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看健康状态
[root@master k8s]# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
安装flannel网络组件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
安装完成之后,操作两台node节点,加入集群(master安装完成之后会输出指令)
kubeadm join 192.168.116.129:6443 --token 2rvc7t.jiuo0d8lan3kzefl \
--discovery-token-ca-cert-hash sha256:f7780a2758780db028a0b345ca64ba2d304cc7ea7
在master主节点验证集群
kubectl get nodes