一、环境准备
192.168.90.90 master
192.168.90.91 node01
192.168.90.92 node02
二、系统设置
【所有节点都执行】
1、禁用selinux、swap、firewalld、iptables
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
swapoff -a
sed -i 's|^\(/.*swap\)|#\1|' /etc/fstab
systemctl stop iptables
systemctl disable iptables
systemctl status firewalld
systemctl disable firewalld
【所有节点都执行】
2、升级内核
yum -y update kernel*
【Master节点执行】
3、集群免密
ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ''
ssh-copy-id 192.168.90.90
ssh-copy-id 192.168.90.91
ssh-copy-id 192.168.90.92
【所有节点都执行】
4、开启网络转发
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
lsmod | grep br_netfilter
lsmod | grep overlay
sysctl \
net.bridge.bridge-nf-call-iptables \
net.bridge.bridge-nf-call-ip6tables \
net.ipv4.ip_forward
三、安装集群组件
【所有节点都执行】
1、containerd安装配置
yum remove -y docker docker-common docker-selinux docker-engine
curl -o /etc/yum.repos.d/docker-ce.repo \
https://download.docker.com/linux/centos/docker-ce.repo
sed -e 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' \
-i.bak /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum install -y containerd
mv /etc/containerd/config.toml /etc/containerd/config.toml.default
containerd config default > /etc/containerd/config.toml
sed -i 's|registry.k8s.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml
systemctl enable containerd
systemctl restart containerd
systemctl status containerd
【所有节点都执行】
2、安装kubeadm、kubelet、kubectl
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
sed -e "s|packages.cloud.google.com|mirrors.aliyun.com/kubernetes|" \
-e "s|gpgcheck=1|gpgcheck=0|" \
-i /etc/yum.repos.d/kubernetes.repo
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
【Master节点执行】
4、集群初始化
kubeadm init \
--apiserver-advertise-address 192.168.90.90 \
--apiserver-bind-port 6443 \
--control-plane-endpoint 192.168.90.90 \
--service-cidr=10.119.0.0/16 \
--service-dns-domain="cluster.local" \
--pod-network-cidr=10.120.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers
【Master节点执行】
5、配置环境变量(初始化集群后会显示)
export KUBECONFIG=/etc/kubernetes/admin.conf
cat <<EOF | tee -a ~/.bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF
source ~/.bash_profile
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
【Master、Node选择节点执行】
5、集群节点加入
(加入master节点)
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
kubeadm join 192.168.90.90:6443 --token nwc0z8.jdfc102z4ocpgtlo \
--discovery-token-ca-cert-hash sha256:aafd6f69a0a10e22fabdf2367ef6cc200f188fd7f4cc330b02b7ac7d256e304b \
--control-plane
(加入node节点)
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.90.90:6443 --token nwc0z8.jdfc102z4ocpgtlo \
--discovery-token-ca-cert-hash sha256:aafd6f69a0a10e22fabdf2367ef6cc200f188fd7f4cc330b02b7ac7d256e304b
四、安装网络组件
【Master节点执行】
1、下载calico网络组件
wget https://docs.projectcalico.org/manifests/calico.yaml
2、修改calico配置
#将CALICO_IPV4POOL_CIDR修改为初始化时的网络10.244.0.0/16
- name: CALICO_IPV4POOL_CIDR
value: "10.120.0.0/16"
#添加指定网卡
- name: CLUSTER_TYPE
value: "k8s,bgp"
- name: IP_AUTODETECTION_METHOD
value: "interface=ens*"
3、启动calico服务
kubectl apply -f calico.yaml
五、集群检查
【Master节点执行】
kubectl get nodes
kubectl get pods -n kube-system