K8S从入门到放弃(三)——kubeadm部署

一 官网

点击查看部署kubeadm官方文档

二 环境说明

1 软件环境

(CSDN创建表格真恶心,如果有方便的方法请私信我,感谢)

软件版本
操作系统Centos 7.9_64
Docker19-ce
Kubernets1.21

2 服务器配置

点击查看最小资源配置

CPU内存硬盘
4C4G20G

3 服务器规划

角色IP
k8s-master192.168.100.101
k8s-node1192.168.100.102
k8s-node2192.168.100.103

三 部署

1 环境准备

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
bash

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.100.101 k8s-master1
192.168.100.102 k8s-node1
192.168.100.103 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

2 安装docker

2.1 安装docker

  • 所有主机安装
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum clean all && yum makecache 
yum -y install docker-ce-19.03.9 	#这里删掉“-19.03.9”将安装最新版本
systemctl enable docker && systemctl start docker && systemctl status docker

2.2 配置加速器

  • 所有主机配置
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

systemctl restart docker && systemctl status docker
docker info |grep https://b9pmyelo.mirror.aliyuncs.com/

3 安装kubeadm

3.1 添加阿里云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
yum clean all && yum makecache 

3.2 安装kubeadm,kubelet和kubectl

  • 所有主机配置
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0		#删除“-1.21.0”安装最新版本
systemctl enable kubelet

3.3 部署Kubernetes Master

  • master主机操作
kubeadm init \
  --apiserver-advertise-address=192.168.100.101 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.21.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all
  • 参数说明
    •–apiserver-advertise-address:集群通告地址,填写master地址
    •–image-repository:由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址,如果拉取不了镜像自行更换仓库地址
    •–kubernetes-version:K8s版本,与上面安装的一致
    •–service-cidr:集群内部虚拟网络,Pod统一访问入口
    •–pod-network-cidr:Pod网络,与下面部署的CNI网络组件yaml中保持一致

3.4 回显说明
在执行完master初始化后会有一段回显
在这里插入图片描述

  • 这里拉取coredns镜像失败了,是因为阿里云仓库的问题,下面会解决

3.5 k8s配置文件环境变量

  • master主机操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.6 node节点加入集群

  • node所有主机操作
kubeadm join 192.168.100.101:6443 --token pb4a1l.qtijjalirm8zk82y \
	--discovery-token-ca-cert-hash sha256:2d74573ee3429e8fd48b4c85e5027ec88ebecc1b2f4f09a2a8e6c74f8e23c16d
  • 重新生成token(这步不需要操作,默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,然后使用回显的命令在node节点操作加入到集群内)
 kubeadm token create --print-join-command

验证

  • master操作
  • STATUS处于“NotReady”状态,是因为没有部署网络组件,如果后续在工作中出现该状态,也可以从网络组件方面排查
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   8m53s   v1.21.0
k8s-node1    NotReady   <none>                 103s    v1.21.0
k8s-node2    NotReady   <none>                 102s    v1.21.0

3.7 部署容器网络(CNI)

  • master操作
  • 官方yaml,需要翻墙
wget https://docs.projectcalico.org/manifests/calico.yaml
  • 百度网盘
链接:https://pan.baidu.com/s/1SrYDhLSUKte0PdgH2_eEeA 
提取码:ttbr 
--来自百度网盘超级会员V3的分享
kubectl apply -f calico.yaml

注意
下载完后还需要修改里面定义Pod网络"CALICO_IPV4POOL_CIDR",与前面kubeadm init的 --"pod-network-cidr"指定的一样,如果跟我操作一样则不需要修改。

3.8 解决coredns问题

  • 在所有节点执行
docker pull registry.aliyuncs.com/google_containers/coredns:1.8.0
docker tag registry.aliyuncs.com/google_containers/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0

3.9 验证集群健康状态

kubectl get node
#全部处于ready状态,集群健康。
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   37m   v1.21.0
k8s-node1    Ready    <none>                 30m   v1.21.0
k8s-node2    Ready    <none>                 30m   v1.21.0

3.10 验证集群可用性

kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
#查看pod运行在哪个node上
kubectl get pod -o wide
#查看ng暴漏的随机端口
kubectl get svc
#访问地址:http://NodeIP:Port

至此,kubeadm部署完毕

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值