基于云主机的k8s环境搭建

发布时间:2023年12月18日

1. 申请三台云主机(按量付费即可)

内网IP配置节点角色
172.17.0.92C4Gk8s-master
172.17.0.82C2Gk8s-node1
172.17.0.172C2Gk8s-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 << EOF

172.17.0.9 k8s-master

172.17.0.8 k8s-node1

172.17.0.17 k8s-node2

EOF
  • 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF
sysctl --system  # 执行该命令生效
  • 机器时间同步
yum install ntpdate -y

ntpdate 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状态才算正常

文章来源:https://blog.csdn.net/qq_36940806/article/details/135047219
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。