环境准备

vmware搭建centos (自行百度吧,直接搭建完一台后克隆即可)

HOSTIP
master192.168.187.128
slave1192.168.187.129
slave1192.168.187.130

1.初始操作(所有host都需要执行)

# 关闭防火墙
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    # 永久

# 关闭完swap后,一定要重启一下虚拟机!!!
# 根据规划设置主机名 !!!(这里三台虚拟机需要分别设置不同的hostname,任选一个作为master)
# 例:在128上执行hostnamectl set-hostname master,其他主机类似
hostnamectl set-hostname <hostname>  

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.187.128 master
192.168.187.129 slave1
192.168.187.130 slave2
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安装

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
service docker start
docker version

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.23.6 kubeadm-1.23.6 kubectl-1.23.6
systemctl enable kubelet
# 配置关闭 Docker 的 cgroups,修改 /etc/docker/daemon.json,加入以下内容
# 注意注意!这里的registry-mirrors需要自己去阿里云配置,请先配置阿里云之后再进行下面命令操作,配置如附所示。
tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
# 重启 docker
systemctl daemon-reload
systemctl restart docker

附:因为最近国内docker源被封,单独拉取镜像可以参考b站 博哥爱运维的方法,亲测可用!话不多说,继续接上面的问题。
**第一步、**前往阿里云首页并登录
**第二步、**搜索容器镜像服务
在这里插入图片描述
**第三步、**创建一个个人版的实例
在这里插入图片描述
**第四步、**点击镜像加速器即可查看你的链接
在这里插入图片描述

5. 部署k8s master

# 在 Master 节点下执行

# 执行完下面的命令有一个kubeadm join的命令,如下图所示,一定要先保存下来!!
kubeadm init \
      --apiserver-advertise-address=192.168.187.128 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.23.6 \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16



# 安装成功后,复制如下配置并执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes

图1

6. 加入其他的slave(所有需要加入master的slave都要执行)

分别在 slave1 和 slave2 执行kubeamd join命令
kubeadm join 192.168.187.128:6443 --token jz7hgx.w2u1i82bp80t1ua1 \
        --discovery-token-ca-cert-hash sha256:f5968e7f0e43b0960e1621d0a1182808355cb9db292d0904fa9a87fb2250532c
如果你真的忘记了或者初始化的 token 不小心清空了,可以通过如下命令获取或者重新申请(!!24h默认清空)
如果 token 已经过期,就重新申请
kubeadm token create
token 没有过期可以通过如下命令获取
kubeadm token list
获取 --discovery-token-ca-cert-hash 值,得到值后需要在前面拼接上 sha256:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'

以上步骤结束,基本就已经完成了集群的搭建,但是我们可以看到所有节点的status的状态却都还是NotReady,这里就必须要配置网络了,我们继续操作。
在这里插入图片描述

7.部署CNI网络插件

因为docker被封的原因,我在这里直接提供文件安装,做个任务就能下载啦。

直接将文件上传到你的节点当中,然后运行下面的命令即可。

[root@master k8s]# unzip calico-v3.25.0.zip
Archive:  calico-image-v3.25.0.zip
replace calico.yaml? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: calico.yaml
  inflating: calico-image-v3.25.0.tar
[root@master k8s]# ls
calico-image-v3.25.0.tar  calico-image-v3.25.0.zip  calico.yaml
[root@master k8s]# docker load -i calico-image-v3.25.0.tar
2115854292b7: Loading layer [==================================================>]  13.82kB/13.82kB
f2cd7a8887ad: Loading layer [==================================================>]   2.56kB/2.56kB
e53823ea1ab6: Loading layer [==================================================>]  2.048kB/2.048kB
aab16c21b5f0: Loading layer [==================================================>]  2.048kB/2.048kB
80a0311a6f35: Loading layer [==================================================>]  152.1kB/152.1kB
f915be43d1f2: Loading layer [==================================================>]  2.096MB/2.096MB
7aba39e8ebcd: Loading layer [==================================================>]  1.124MB/1.124MB
8e47df0af359: Loading layer [==================================================>]  31.74kB/31.74kB
05cbe103e488: Loading layer [==================================================>]  56.83kB/56.83kB
445109866ec0: Loading layer [==================================================>]   2.56kB/2.56kB
f17fc9408cc0: Loading layer [==================================================>]  4.608kB/4.608kB
a8764b36cebb: Loading layer [==================================================>]  65.42MB/65.42MB
6b6e0e9a04c1: Loading layer [==================================================>]  2.744MB/2.744MB
Loaded image: calico/kube-controllers:v3.25.0
14a282cea6ec: Loading layer [==================================================>]  88.58kB/88.58kB
2553397e07e0: Loading layer [==================================================>]  13.82kB/13.82kB
476b7b4979ae: Loading layer [==================================================>]  1.124MB/1.124MB
17d9f5d187d9: Loading layer [==================================================>]  152.1kB/152.1kB
e391db31906a: Loading layer [==================================================>]  2.096MB/2.096MB
97a5923546c2: Loading layer [==================================================>]   2.56kB/2.56kB
0ed010669301: Loading layer [==================================================>]  4.608kB/4.608kB
3cf983e25bde: Loading layer [==================================================>]  194.4MB/194.4MB
5f70bf18a086: Loading layer [==================================================>]  1.024kB/1.024kB
Loaded image: calico/cni:v3.25.0
350fd2fc4cdb: Loading layer [==================================================>]  246.8MB/246.8MB
4e86ebda2314: Loading layer [==================================================>]  13.82kB/13.82kB
Loaded image: calico/node:v3.25.0

结果如下:

[root@master k8s]# kubectl get pod -nkube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-64cc74d646-xj682   1/1     Running   0          4h9m
calico-node-552ct                          1/1     Running   0          4h9m
calico-node-c5bdc                          1/1     Running   0          4h9m
calico-node-s85sq                          1/1     Running   0          4h9m
coredns-6d8c4cb4d-7qgkr                    1/1     Running   0          4h18m
coredns-6d8c4cb4d-kkk59                    1/1     Running   0          4h18m
etcd-master                                1/1     Running   0          4h18m
kube-apiserver-master                      1/1     Running   0          4h18m
kube-controller-manager-master             1/1     Running   0          4h18m
kube-proxy-kp5bj                           1/1     Running   0          4h17m
kube-proxy-qhcr5                           1/1     Running   0          4h17m
kube-proxy-tl9xt                           1/1     Running   0          4h18m
kube-scheduler-master                      1/1     Running   0          4h18m

在这里插入图片描述

8.测试k8s集群

# 创建部署
kubectl create deployment nginx --image=nginx

# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort

# 查看 pod 以及服务信息
kubectl get pod
kubectl get services

9.完结撒花

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐