Kubernetes学习篇---构建K8S集群
一、准备工作
阿里云服务器配置如下:
- xshell远程访问工具
- CPU和内存:2核4G 2台
- 操作系统:Centos7.8 64位
- 需要访问公网下载docker和k8s镜像,带宽值2M。
二、安装Docker
1.用xshell登录服务器
2.关闭安全配置
vi /etc/selinux/config
3.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
4.关闭swap交换分区
#临时关闭swap
swapoff -a
或者
#永久关闭swap
vi /etc/fstab
5.安装Docker
(1)安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
(2)配置docker仓库镜像源
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
(3)安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io
(4)Docker自启动
systemctl enable docker
systemctl start docker
(5)查看docker是否安装成功
docker -v
(6)配置阿里云镜像加速器和docker的cgroupdriver类型
#cgroupdriver类型设置为systemd是为了和k8s保持一致
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pmp7i8xs.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
三、安装K8S集群
1.配置k8s仓库源
cat > /etc/yum.repos.d/kubrenetes.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
2.安装kubeadm、kubelet和kubectl
yum install -y kubeadm kubelet kubectl
3.配置kubelet启动
systemctl enable kubelet
systemctl start kubelet
4.配置系统内核参数使流过网桥的流量也进入iptables/netfilter框架
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #使配置生效
systemctl status kubelet #查看kubelet状态
5.安装网络插件
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
注:以上第二步、第三步需在master节点和node节点均进行操作。
四、K8S集群—master节点
1.初始化master节点
#IP地址请根据实际情况修改
kubeadm init \
--apiserver-advertise-address=172.19.98.25 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.22.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
注:初始化master节点过程中有可能出现失败的情况,可查看k8s所需的镜像。如果docker无法下载这些k8s镜像,可通过docker tag命令将docker中已有镜像修改为可使用的镜像。
可能用到的命令如下(举例):
#查看K8S所需镜像
kubeadm config images list
#查看docker镜像
docker images
#修改镜像
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.22.0 k8s.gcr.io/kube-apiserver:v1.22.0
#下载镜像
docker pull registry.aliyuncs.com/google_containers/coredns:1.8.4
2.K8S集群配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
#使配置生效
source ~/.bash_profile
3.查看集群中master
kubectl get nodes
Ready为正常。
(1)如果出现No ready,一般情况需要检查kubelet的状态,可通过systemctl start kubelet.service开启服务。
(2)或者有时也需要重启docker,可根据实际情况操作。
五、K8S集群—node1节点加入master集群
1.在master节点上拿到加入集群的命令
kubeadm token create --print-join-command
2.在node1节点执行加入集群命令
#根据实际情况生成的token加入master节点
kubeadm join 172.19.98.25:6443 --token tyuqbj.08ysq95yi0vsj2ag --discovery-token-ca-cert-hash sha256:7dcce876670f4f5e600efcf7862173fa78f2e7c6b7638fdcb7d835db8e776893
3.在mater节点上查看集群nodes
kubectl get nodes
Ready为正常。
(1)如果出现No ready,一般情况需要检查kubelet的状态,可通过systemctl start kubelet.service开启服务。
(2)或者有时也需要重启docker,可根据实际情况操作。
4.重置一个节点为初始状态***
如果节点配置错误,无论是master还是node1,都可以重置为初始状态。
(请根据实际情况操作)
kubeadm reset
rm -rf $HOME/.kube
rm -rf /var/lib/etcd
rm -rf /etc/kubernetes/manifests
rm -rf /etc/cni/net.d