Kubernetes部署

一、实验环境 

系统版本:CentOS7.6

内核版本:3.10.0-957.el7.x86_64

kubernetes版本:1.23.6

docker版本:docker-ce-20.10.9-3.el7

角色 IP地址 节点主机名 硬件配置 系统
master 172.17.0.41 master01 4c4g CentOS7.6
master 172.17.0.42 master02 4c4g CentOS7.6
node 172.17.0.31 slave01 4c4g CentOS7.6
node 172.17.0.32 slave02 4c4g CentOS7.6

二、 配置hosts信息(全部节点都要操作)

cat >> /etc/hosts <

三、修改主机名

 master01

hostnamectl set-hostname master01

master02

hostnamectl set-hostname master02

node01

hostnamectl set-hostname slave01

node02

hostnamectl set-hostname slave02

四、修改 .bashrc 环境变量(全部节点都要操作)

cat > .bashrc <

五、内核优化(全部节点都要操作)

cat > /etc/sysctl.conf<

# 添加需要开启自动加载内核模块

echo 'modprobe ip_conntrack' >> /etc/profile
echo 'modprobe br_netfilter' >> /etc/profile

source /etc/profile
sysctl -p

六、优化文件打开数(全部节点都要操作)

cat >> /etc/security/limits.conf <

七、关闭防火墙和关闭安全子系统(全部节点都要操作)

# 禁用防火墙
systemctl stop firewalld && systemctl disable firewalld

# 临时禁用selinux
setenforce 0

# 永久修改,重启服务器后生效
sed -i '/^enforcing=/s/enforcing=.*/enforcing=disabled/' /etc/selinux/config

八、安装ipvs(全部节点都要操作)

# 创建脚本
cat > /etc/sysconfig/modules/ipvs.modules < /dev/null 2>&1
 if [ 0 -eq 0 ]; then
 /sbin/modprobe \${kernel_module}
 fi
done
EOF

# 执行并检查
chmod +x /etc/sysconfig/modules/ipvs.modules && \
/etc/sysconfig/modules/ipvs.modules && \
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

# 安装ipset和ipvsadm(便于查看 ipvs 的代理规则)
yum -y install ipset ipvsadm

九、安装 时间同步服务(全部节点都要操作)

yum -y install chrony

# 修改配置文件
sed -i.bak '3,6d' /etc/chrony.conf && \
sed -i '3cserver ntp1.aliyun.com iburst' /etc/chrony.conf

# 启动并设置开机自启
systemctl start chronyd && systemctl enable chronyd

# 查看同步结果
[root@master01 16:28:41~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 120.25.115.20                 2  10   332   51m   +176us[ +259us] +/- 4782us
[root@master01 16:28:52~]# 

十、关闭swap分区(全部节点都要操作)

# 关闭开机自启
sed -i '/swap/s/^/#/' /etc/fstab

# 检查结果(全部节点都要操作)Kubernetes部署_第1张图片

 十一、重启服务器(全部节点都要操作)

init 6

十二、安装docker(全部节点都要操作)

1、安装yum资源库管理命令

yum -y install yum-utils

2、添加阿里云yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、查看可用版本

yum list docker-ce --showduplicates | sort -r

4、安装20.10.9-3.el7

yum -y install docker-ce-20.10.9-3.el7 docker-ce-cli-20.10.9-3.el7

5、配置阿里云docker镜像加速

mkdir -p /etc/docker/

cat > /etc/docker/daemon.json <

6、修改docker Cgroup Driver为systemd

# 将/usr/lib/systemd/system/docker.service文件中的这一行
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

# 修改为 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd

# 如果不修改,在添加 worker 节点时可能会碰到如下错误
# [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The # recommended driver is "systemd". 
# Please follow the guide at https://kubernetes.io/docs/setup/cri/


# 使用如下命令修改  
sed -i.bak "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service

7、启动docker并设置开机自启

systemctl daemon-reload && \
systemctl restart docker && \
systemctl enable docker

8、验证信息

docker info

版本信息确认

Kubernetes部署_第2张图片

阿里云镜像加速确认

Kubernetes部署_第3张图片

十三、安装Kubeadm(全部节点都要操作)

1、使用阿里云的yum源

cat >/etc/yum.repos.d/kubernetes.repo <

2、安装 kubeadm、kubelet、kubectl

yum -y install kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6

3、查看版本信息

 4、设置开机自启

systemctl enable kubelet

 5、配置k8s命令和参数tab自动补全

yum -y install bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

十四、初始化集群(只在master01上操作)

1、配置 kubeadm 初始化文件

cat > ./kubeadm-config.yaml <

2、初始化master

kubeadm init --config=kubeadm-config.yaml --upload-certs

# 注意,这步不用操作,如果发现需要重新改配置文件,重新初始化master,则执行这步

kubeadm reset -f kubeadm-config.yaml

3、按提示要求操作,直接复制操作就行了

Kubernetes部署_第4张图片

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

十五、添加master节点(只在master02上操作)

1、从master01复制所需要的配置文件过master02上 

mkdir -p $HOME/.kube
scp master01:/root/.kube/config $HOME/.kube
chown $(id -u):$(id -g) $HOME/.kube/config

2、master节点添加,复制这段来添加

Kubernetes部署_第5张图片

 复制到master02节点上执行命令Kubernetes部署_第6张图片

3、等待执行完成,查看结果

kubectl get node

十六、添加node节点(只在slave01和slave02上操作)

 1、从master01复制所需要的配置文件过node节点上(这步可以不操作,只是为了方便node节点可以想master节点一样,可以执行kubectl命令操作) 

mkdir -p $HOME/.kube 
scp master01:/root/.kube/config $HOME/.kube
chown $(id -u):$(id -g) $HOME/.kube/config

 2、node节点添加,复制这段来添加

Kubernetes部署_第7张图片

3、复制到slave01和slave02节点上执行命令

 Kubernetes部署_第8张图片

十七、安装网络插件

1、下载yaml文件,官网地址:Project Calico DocumentationHomeKubernetes部署_第9张图片https://projectcalico.docs.tigera.io/

wget https://docs.projectcalico.org/v3.21/manifests/calico.yaml --no-check-certificate

2、修改配置文件

vim calico.yaml

搜索关键字:CALICO_IPV4POOL_CIDR,打开注释(删除#号和一个空格)

Kubernetes部署_第10张图片

 修改成如下,要对齐上面的#号,value里的变量填写为第 十四 步骤里的 kubeadm-config.yaml 中 podSubnet 变量一致

Kubernetes部署_第11张图片

 3、执行

kubectl apply -f calico.yaml

4、等待一会,检查pod安装情况

kubectl get pod -n kube-system

Kubernetes部署_第12张图片

5、全部状态为Running时,再检查节点情况,节点的状态全部为Ready就正常了

kubectl get node

Kubernetes部署_第13张图片 

 十八、配置storageclass动态存储,实现k8s自动管理PV,这里用的是nfs做存储后端

1、安装 nfs-utils 和 socat 依赖包(全部节点都要操作)

yum -y install  nfs-utils socat

2、master01 节点安装 rpcbind 服务,这里用 master01 作为nfs服务端

yum -y install rpcbind

# 创建目录并修改权限
mkdir -p /data/software/nfs_data
chmod 777 /data/software/nfs_data

# 编辑配置文件
cat >/etc/exports <

3、配置storageclass的yaml文件,注意修改nfs服务端IP和共享目录

cat > storageclass.yaml <

4、创建storageclass 

kubectl apply -f storageclass.yaml

5、设置自动创建PVC(strorageclass)时默认选择nfs-storage

kubectl patch storageclass nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

6、检查情况,查看nfs-storage是否带有default字样

kubectl get sc

 7、检查nfs-client pod状态

kubectl get pods

 

 8、创建pvc测试看看storageclass是否生效

cat > pvc-test.yaml <

9、查看创建的PVC ,状态为Pending不正常

 9、查看nfs-client pod日志,kubectl logs -n nfs-data 之后用tab键来补全

kubectl logs -n nfs-data #tab键来完成后续的补全pod名称
kubectl logs -n nfs-data nfs-provisioner-6d457c6f8d-wn4wq

 检查发现全部显示的都是该类报错 ,查询到官网的git说明:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/issues/25icon-default.png?t=M3K6https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/issues/25

Kubernetes部署_第14张图片

10、修改/etc/kubernetes/manifests/kube-apiserver.yaml解决问题(master节点都要添加,这里添加节点有 master01 和 master02)

添加内容

- --feature-gates=RemoveSelfLink=false

 Kubernetes部署_第15张图片

 11、等待一会,返回第 9 步骤,查看PVC的状态,如果状态为Bound就正常了,按理来说 kubeadm 部署的k8s是不需要执行以下操作的,如果为了以防万一,可以执行下面操作

kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml # 执行两次操作
kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml

 12、如果执行了 11 步操作,要查看pod的状态,如果看多于的pod的,kube-apiserver的pod是带有后缀为主机名的,不是就是多余的

kubectl get pod -n kube-system

Kubernetes部署_第16张图片

13、删除多余的pod

kubectl delete -n kube-system pods kube-apiserver

Kubernetes部署_第17张图片

14、再次查看PVC状态,如果状态为Bound就正常了

kubectl get pvc

 15、如果PVC还是不正常,可以删掉再重新创建,还是不行就只能重新开始创建storageclass

kubectl delete -f pvc-test.yaml
kubectl apply -f pvc-test.yaml

16、查看存储介质情况,多了一些东西在里面

[root@master01 14:32:26/data/recycle]# ls /data/software/nfs_data/
default-pvc-test-pvc-f350362e-b69b-4b20-84f4-0f77f1264f91
[root@master01 14:32:35/data/recycle]# 

 十九、部署KubeSphere,官方地址:​​​​​​​在 Kubernetes 上最小化安装 KubeSphere了解在现有 Kubernetes 集群上如何使用最小安装包安装 KubeSphere。您可以使用托管在云服务器上或者安装在本地的 Kubernetes 集群。https://kubesphere.io/zh/docs/quick-start/minimal-kubesphere-on-k8s/

 1、下载yaml文件

wget https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/kubesphere-installer.yaml
   
wget https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yaml

2、创建 KubeSphere 相关pod

kubectl apply -f kubesphere-installer.yaml
kubectl apply -f cluster-configuration.yaml

3、查看安装log,直到出现账号密码提示 

kubectl logs -n kubesphere-system \
$(kubectl get pod \
-n kubesphere-system \
-l app=ks-install \
-o jsonpath='{.items[0].metadata.name}') -f

Kubernetes部署_第18张图片 

4、确认pod状态情况

kubectl get pod -n kubesphere-system

Kubernetes部署_第19张图片

 5、登陆网页,

url: http://172.17.0.41:30880
账号: admin
密码: P@88w0rd

Kubernetes部署_第20张图片

 至此,全部部署完成​​​​​​​

你可能感兴趣的:(kubernetes,kubernetes,k8s,KubeSphere,strorageclass)