1. 申请三台云主机(按量付费即可)
内网IP | 配置 | 节点角色 |
---|---|---|
172.17.0.9 | 2C4G | k8s-master |
172.17.0.8 | 2C2G | k8s-node1 |
172.17.0.17 | 2C2G | k8s-node2 |
2. 安装Kubernetes集群(全部节点执行以下操作)
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
ps: 以上两条命令2选1执行
- 禁用swap分区
sed -ri 's/.swap./#&/' /etc/fstab # 永久(需要重启机器才能生效)
swapoff -a # 临时
ps: 以上两条命令2选1执行,第一条命令需要重启机器生效!
- 三台机器分别设置主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
- 三台机器添加hosts
cat >> /etc/hosts << EOF172.17.0.9 k8s-master172.17.0.8 k8s-node1172.17.0.17 k8s-node2EOF
- 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF
sysctl --system # 执行该命令生效
- 机器时间同步
yum install ntpdate -yntpdate time.windows.com
-
所有节点安装docker(略)
docker安装 -
修改docker配置,设置cgroup驱动
vim /etc/docker/daemon.json
{
// 添加以下内容
"exec-opts": ["native.cgroupdriver=systemd"],
}
- 重启docker
systemctl daemon-reload //重新加载docker服务的配置文件
systemctl restart docker
- 添加k8s阿里云yum软件源
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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- 安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl start kubelet
systemctl enable kubelet
3. 部署Kubernetes集群(k8s-master节点执行以下操作)
- 修改kubeadm的镜像地址为国内镜像地址
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
- 拉取镜像
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
- 初始化kubernetes
kubeadm init \--apiserver-advertise-address=172.17.0.9 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.23.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--ignore-preflight-errors=all# –apiserver-advertise-address # k8s-master 机器 ip
# –image-repository # 指定阿里云镜像仓库地址
# –kubernetes-version # k8s版本,需要与安装版本一致
# –service-cidr #集群内部虚拟网络,pod统一访问入口
# –pod-network-cidr # k8s内部的pod节点之间网络可以使用的IP段
- 记录上一步骤执行结果中加入集群的join命令(后续k8s-node节点加入集群需要使用到)
# eg: 形式如下
kubeadm join 172.16.0.9:6443 --token 3pzsx0.xys1k68ntvtpa58q \--discovery-token-ca-cert-hash sha256:391515fc9c9f19651553afb2454e7797459c69d56f015559e694dc07a118f8ee
- 执行以下操作(根据上一步骤执行结果提示)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4. 配置kubelet网络(k8s-master节点执行以下操作)
- 下载 kube-flannel.yml
wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
ps: 下载不下来, 通过网站https://tool.lu/ip/获取域名 raw.githubusercontent.com 最新的ip地址,写入hosts即可
- 修改kube-flannel.yml配置文件的 Newwork对应的值, 需要与与执行 kubeadm init 时,输入的 pod-network-cidr 对应的值一致
net-conf.json: |{"Network": "10.244.0.0/16","Backend"": {"Type": "vxlan"}
}
- 安装flannel组件
kubectl apply -f kube-flannel.yml
- 查看flannel组件状态
kubectl get pod --all-namespaces
ps: 需要所有的pod状态为running才可以
- 查看主节点的状态
kubectl get cs
ps: 需要为Healthy才可以
- 查看所有节点状态
kubectl get nodes
ps: 此时只有主节点,子节点尚未加入集群
5. 子节点加入k8s集群
- k8s-node节点执行join命令(来自之前步骤记录的结果)
kubeadm join 172.16.0.9:6443 --token 3pzsx0.xys1k68ntvtpa58q --discovery-token-ca-cert-hash sha256:391515fc9c9f19651553afb2454e7797459c69d56f015559e694dc07a118f8ee
- k8s-master节点执行以下命令查看所有节点状态
kubectl get nodes
ps: 必须要都为Ready状态才算正常