使用kubeadm部署k8s集群

1、简介

K8s部署主要有两种方式:

  • 1、Kubeadm

Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。

  • 2、二进制

从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。

本文通过kudeadm的方式在centos7上安装kubernetes集群。

2、环境准备

(1)初始化配置

复制代码
#关闭防火墙
复制代码
systemctl stop firewalld
systemctl disable firewalld
复制代码
#关闭selinux
复制代码
sed -i 's/enforcing/disabled/' /etc/selinux/config 

#关闭swap

把/etc/fstab下的swap注释掉。

|---|-------------------------------------------|
| 1 | sed -ri ``'s/.*swap.*/#&/' /etc/fstab |

#设置主机名

复制代码
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-worker01
hostnamectl set-hostname k8s-worker02

#在master添加hosts

复制代码
cat > /etc/hosts << EOF
192.168.204.129 k8s-master01
192.168.204.130 k8s-worker01
192.168.204.131 k8s-worker02
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

(2) 安装Docker

复制代码
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker

#配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://kd88kykb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

(3)添加阿里云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

(4)安装kubeadm、kubelet和kubectl

复制代码
 yum install -y kubelet-1.21.4 kubeadm-1.21.4 kubectl-1.21.4 
 systemctl enable kubelet

3、部署Kubernetes Master

复制代码
kubeadm init \
--apiserver-advertise-address=192.168.204.129 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.21.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=172.16.0.0/16 \
--ignore-preflight-errors=all

安装成功

使用kubectl查看节点状态

4、部署Node节点

向集群添加新节点,执行kubeadm join命令即可。

复制代码
kubeadm join 192.168.204.129:6443 --token 1g5b2s.sany5uo5w4op3hae \
    --discovery-token-ca-cert-hash sha256:0fc38e874b727a9a4c2118e562a0b941dde98fa6ecc4ec2a6161b7d70a3966e2 

journalctl -u kubelet

5、部署容器网络(CNI)

找到k8s版本对应的calico

https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements

复制代码
#下载calico.yaml,替换CALICO_IPV4POOL_CIDR
curl https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml -O calico.yaml
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico-etcd.yaml -o calico.yaml
#通过CALICO_IPV4POOL_CIDR手动配置Pod子网范围
#   - name: CALICO_IPV4POOL_CIDR
#              value: "172.16.0.0/16"

kubectl apply -f calico.yaml
kubectl get pods -n kube-system

6、测试kubernetes集群

在集群中创建一个pod,验证是否正常运行:

复制代码
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

7、部署Dashboard

下载,并增加 type: NodePort

https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

复制代码
kubectl apply -f recommended.yaml
kubectl get pod,svc -n kubernetes-dashboard

浏览器访问dashboard

创建service account 并绑定默认cluster-admin管理员集群角色:

|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | #创建用户 kubectl create serviceaccount dashboard-admin -n kube-system #用户授权 kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin #获取用户token kubectl describe secret -n kube-system $(kubectl -n kube-system ``get secret|awk ``'/dashboard-admin/{print $1}'``) |

使用token登录dashboard。

相关推荐
斯普信云原生组12 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪13 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人13 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
迷藏49413 小时前
**eBPF实战进阶:从零构建网络流量监控与过滤系统**在现代云原生架构中,**网络可观测性**和**安全隔离**已成为
java·网络·python·云原生·架构
刘~浪地球13 小时前
架构设计--事件驱动架构设计与实现(05)
云原生·系统架构·云计算
鬼先生_sir13 小时前
Zookeeper:从入门到精通
分布式·zookeeper·云原生
marsh020614 小时前
31 openclaw微服务架构实践:构建分布式系统
微服务·ai·云原生·架构·编程·技术
❀͜͡傀儡师14 小时前
k8s部署的Nexus 3 数据库损坏恢复指南:从删除损坏数据库到完整数据重建
数据库·kubernetes·nexus3
开心码农1号15 小时前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
张32315 小时前
K8s 不部署源代码、不构建应用
kubernetes