环境准备工作(每个节点都需要的操作)
####如果部署过程中遇到任何问题可私信:
IP地址 | 节点名 | |
172.16.1.156 | masts | |
172.16.1.162 | node1 | |
172.16.1.152 | node2 |
1.更改主机名
hostnamectl set-hostname masts hostnamectl set-hostname node1 hostnamectl set-hostname node2
2.关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configgetenforce 查看关闭没有
3.关闭swap
[root@masts ~]# swapoff -a[root@masts ~]# free -m
4.在每个节点生成一个密钥然后发送给每个节点
ssh-keygen
ssh-copy-id masts
ssh-copy-id node1
ssh-copy-id node2
5.时间同步
yum install chrony -y
systemctl enabled chront.service
vim /etc/chrony.conf 修改的配置文件如下
删除
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
默认 NTP 服务地址替换为国内阿里云 NTP 服务器地址
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp1.tencent.com iburst
server ntp2.tencent.com iburst
6.修改内核参数
[root@xuegod64 ~]# modprobe br_netfilter[root@xuegod64~]# lsmod | grep br_netfilterbr_netfilter 22256 0bridge 151336 1 br_netfilter[root@xuegod64 ~]# cat > /etc/sysctl.d/k8s.conf <<EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOF
安装Docker:k8s所需的镜像和插件和Dokcer和k8s源(注意版本信息)每个节点都需要完成的操作
1.部署Docker的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.部署k8s的源
tee /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
EOF
3.下载Docker和启动流程
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
4.生成Docker的配置文件(此页面最下面有daemon的包可以直接下载)
tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors":["https://vh3bm52y.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
systemctl status docker
5.下载k8s所需要的文件
yum install -y kubelet-1.23.1 kubeadm-1.23.1 kubectl-1.23.1
systemctl enable kubelet
6.初始化集群就是拉取k8s所需的镜像
方法一:docker load -i k8s-images-v1.23.1.tar.gz在页面最下方的文件里面找到这个压缩包然后执行此文件即可
方法二:
1.kubeadm config images list查看 Kubernetes 安装所需镜像(会列出一批镜像文件然后执行docker pull 镜像文件名拉取)
2.docker images 查看镜像的下载情况
部署 Kubernetes 的 Master 节点(只需要在masts节点部署)
1.生成yaml的配置文件
kubeadm config print init-defaults > kubeadm.yaml生成yaml文件
配置文件内容如下:(特别标注的颜色的需要更改的地方)
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress:172.16.1.156 masts节点的自己IP地址
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
imagePullPolicy: IfNotPresent
name: masts
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.23.1 这个版本号一定要和安装k8s的版本对的上号才行
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
podSubnet: 10.244.0.0/16 添加这一行
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd 这几行也是需要添加的
然后在masts节点上执行此命令进行k8s的部署(此命令执行完成会生成如下的配置)
kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 172.16.1.156:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:186cec7d72382f6464ee79b543dcbb90b94e0f2520daf9c3114933fa533a1883
在matsts节点执行如下命令即可
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
在管理节点上使用如下命令
kubeadm join 172.16.1.156:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:186cec7d72382f6464ee79b543dcbb90b94e0f2520daf9c3114933fa533a1883
kubectl get nodes 此命令查看部署的情况
安装网络插件
上传 calico.yaml 到 masts 中,使用 yaml 文件安装 calico 网络插件 。
[root@masts ~]# kubectl apply -f calico.yaml
注:在线下载配置文件地址是: https://docs.projectcalico.org/manifests/calico.yaml
拉取镜像需要一定时间,所以我们查看 pod 状态为 running 则安装成功。
[root@masts ~]# kubectl get pod --all-namespaces
再次查看集群状态。
[root@xuegod63 ~]# kubectl get node
masts Ready <none> 97s v1.23.1
node1 Ready control-plane,master 5m43s v1.23.1
node2 Ready <none> 99s v1.23.1