kubeadm方式部署k8s集群
2021-05-14 本文已影响0人
Habit_1027
一、系统设置:(所有节点)
需要配置hosts,方便集群中识别
vim /etc/hosts
关闭防火墙:
$ systemctl stop firewalld
$ systemctl disable firewalld
关闭selinux:
$ sed -i 's/enforcing/disabled/' /etc/selinux/config
$ setenforce 0
关闭swap:
$ swapoff -a $ 临时
$ vim /etc/fstab $ 永久
注释此行
#/dev/mapper/centos-swap swap swap defaults 0 0
添加主机名与IP对应关系(记得设置主机名):
$ cat /etc/hosts
192.168.31.63 k8s-master
192.168.31.65 k8s-node1
192.168.31.66 k8s-node2
hostnamectl set-hostname hostname
将桥接的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
二、安装docker(所有节点)
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version
Docker version 18.06.1-ce, build e68fc7a
三、配置阿里源(所有节点)
$ 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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
四、安装kubeadm,kubelet和kubectl (所有节点)
由于版本更新频繁,这里指定版本号部署
yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
systemctl start kubelet && systemctl enable kubelet
注意:systemctl status kubelet 会显示报错,是证书问题,等后面master初始化会解决
五、部署master(在master上执行)
kubeadm init \
--apiserver-advertise-address=192.168.31.63 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.4 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
#--apiserver-advertise-address= 192.168.31.63 \ master的IP
#--kubernetes-version v1.19.4 \ kubelet版本号
由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
使用kubectl工具:
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
六、安装POD网络插件(master上执行)
cd ~ && mkdir flannel && cd flannel
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#这个下载不下来的话自己下好传到主机中
修改配置文件kube-flannel.yml:
此处的ip配置要与上面kubeadm的pod-network一致,如果一致,不用改
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
修改配置文件kube-flannel.yml:
此处的ip配置要与上面kubeadm的pod-network一致,本来就一致,不用改
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
启动:
# kubectl apply -f ~/flannel/kube-flannel.yml #启动完成之后需要等待一会
[root@k8s-master ~]# kubectl get pods --namespace kube-system
NAME READY STATUS RESTARTS AGE
coredns-6d56c8448f-q49qh 1/1 Running 1 20h
coredns-6d56c8448f-rlkcd 1/1 Running 1 20h
etcd-k8s-master 1/1 Running 1 20h
kube-apiserver-k8s-master 1/1 Running 1 20h
kube-controller-manager-k8s-master 1/1 Running 1 20h
kube-flannel-ds-dhq8k 1/1 Running 2 15h
kube-flannel-ds-t7b65 1/1 Running 1 15h
kube-flannel-ds-xj52t 1/1 Running 3 4h36m
kube-proxy-4brpc 1/1 Running 1 20h
kube-proxy-4f9wx 1/1 Running 3 4h36m
kube-proxy-v2pps 1/1 Running 2 16h
kube-scheduler-k8s-master 1/1 Running 1 20h
查看:
# kubectl get pods --namespace kube-system
# kubectl get service
# kubectl get svc --namespace kube-system
七、配置node节点加入集群(所有node节点)
如果报错开启ip转发:
# sysctl -w net.ipv4.ip_forward=1
在所有node节点操作,此命令为初始化master成功后返回的结果
kubeadm join 192.168.31.63:6443 --token 6ef0x0.nwh9dny9wku2xzfm \
--discovery-token-ca-cert-hash sha256:f76d30477714743401de40e6856ae51e75f33768f8392bb8e53926927d78065c
###执行自己的初始化master成功时候的返回结果
八、在master上查看节点情况
在master上查看节点情况
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 20h v1.19.4
k8s-node1 Ready <none> 16h v1.19.4
k8s-node2 Ready <none> 5h3m v1.19.4
1.各字段含义:
Name: Pod的名称
Namespace: Pod的Namespace。
Image(s): Pod使用的镜像
Node: Pod所在的Node。
Start Time: Pod的起始时间
Labels: Pod的Label。
Status: Pod的状态。
Reason: Pod处于当前状态的原因。
Message: Pod处于当前状态的信息。
IP: Pod的PodIP
Replication Controllers: Pod对应的Replication Controller。
===============================
2.Containers:Pod中容器的信息
Container ID: 容器的ID
Image: 容器的镜像
Image ID:镜像的ID
State: 容器的状态
Ready: 容器的准备状况(true表示准备就绪)。
Restart Count: 容器的重启次数统计
Environment Variables: 容器的环境变量
Conditions: Pod的条件,包含Pod准备状况(true表示准备就绪)
Volumes: Pod的数据卷
Events: 与Pod相关的事件列表
=====
生命周期:指的是status通过# kubectl get pod
生命周期包括:running、Pending、completed、