k8s安装步骤
1、安装docker ##所有机器均操作
mv /etc/yum.repos.d/docker-ce.repo /etc/yum.repos.d/docker-ce.repo.bak
##阿里云docker镜像源
cat > /etc/yum.repos.d/docker-ce.repo <<EOF
[docker-ce-stable]
name=Docker CE Stable - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
yum clean all
yum makecache
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io ##安装指定版本
##镜像加速
echo '{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.1panel.live",
"https://docker.ketches.cn"
]
}' | sudo tee /etc/docker/daemon.json
systemctl start docker
systemctl enable docker
sudo systemctl restart docker
docker version
--------------------------------------------------------------------------------------
自己搭建可以把防火墙卸载或者关闭。以下操作所有机器均执行。
1、各个机器设置自己的域名
hostnamectl set-hostname k8s-master
2、将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
3、关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
4、允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
--------------------------------------------------------------------------------------
1、安装kubelet、kubeadm、kubectl ##所有机器均操作
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
--------------------------------------------------------------------------------------
1、下载各个机器需要的镜像
master节点需要全部的镜像,workernode节点其实只需要一个kube-proxy镜像就可以了。
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
chmod +x ./images.sh && ./images.sh
--------------------------------------------------------------------------------------
1、初始化主节点 ##只在master节点操作
#所有机器添加master域名映射,以下需要修改为自己的
echo "192.168.30.130 k8s-master" >> /etc/hosts ##Ip是master节点的Ip
#主节点初始化
kubeadm init \
--apiserver-advertise-address=192.168.30.130 \ ##Ip是master节点的Ip
--control-plane-endpoint=k8s-master \ ##解析是上面hosts的那个。
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
执行这条命令后,屏幕会显示操作步骤,按照步骤来即可。
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
------
这三条执行以后基本就算安装完成了,还需要安装的就是网络插件,以及被控节点的token了。
kebuctl get nodes ##检查会只有master节点。
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/
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
##可以用以下命令把任意节点加入成为主节点。
kubeadm join k8s-master:6443 --token tsk5bs.2igm526qfczzvzzi \
--discovery-token-ca-cert-hash sha256:119850dd7e42f189f41304665854f4ee5a1f7b19b1b89c0ff85d7a91d9a8931c \
--control-plane
Then you can join any number of worker nodes by running the following on each as root:
##可以用以下命令把任意节点加入成为worker节点。 ##这条在workernode执行,不在master执行。
kubeadm join k8s-master:6443 --token tsk5bs.2igm526qfczzvzzi \
--discovery-token-ca-cert-hash sha256:119850dd7e42f189f41304665854f4ee5a1f7b19b1b89c0ff85d7a91d9a8931c
#所有网络范围不重叠
--------------------------------------------------------------------------------------
1、安装网络组件 ##这个需要安装能对应k8s版本的calico要不然会报错。仅供个人学习使用。
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
kubectl apply -f calico.yaml ##这一步会很慢,需要等挺久的,可以多执行几次,然后kebuctl get pods -A观察状态。
会看到一下内容。
kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-577f77cb5c-lvlt5 1/1 Running 0 10m
kube-system calico-node-8spr2 1/1 Running 0 10m
kube-system coredns-5897cd56c4-8scqr 1/1 Running 0 22m
kube-system coredns-5897cd56c4-h29nf 1/1 Running 0 22m
kube-system etcd-k8s-master 1/1 Running 0 22m
kube-system kube-apiserver-k8s-master 1/1 Running 0 22m
kube-system kube-controller-manager-k8s-master 1/1 Running 0 22m
kube-system kube-proxy-g2gnd 1/1 Running 0 22m
kube-system kube-scheduler-k8s-master 1/1 Running 0 22m
然后执行kubectl get nodes,会看到master节点已经是准备状态。
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 36m v1.20.9
--------------------------------------------------------------------------------------
1、使用主节点初始化时给出的token把worker节点加入到master节点。
Then you can join any number of worker nodes by running the following on each as root:
##可以用以下命令把任意节点加入成为worker节点。 ##这条在workernode执行,不在master执行。
这条命令24小时内有效,超时以后需要重新或许token。
kubeadm token create --print-join-command ##重新获取token
以下这条命令需要再worker节点操作。
kubeadm join k8s-master:6443 --token tsk5bs.2igm526qfczzvzzi --discovery-token-ca-cert-hash sha256:119850dd7e42f189f41304665854f4ee5a1f7b19b1b89c0ff85d7a91d9a8931c
worker节点会回显这样一句话,“这个节点已经加入集群”。
This node has joined the cluster:
2、然后去master节点检查
kebuctl get nodes
会看到新进入的worker节点也是准备状态了。
kebuctl get pods -A
检查有一些应用还在加载状态,可以等他们全部加载running。我只想说这个会等很久很久,很久很久,可能是访问外网不通吧,或许是其他原因,
kube-system calico-node-c6qwx 1/1 Running 0 27m
kube-system calico-node-jgbf5 1/1 Running 0 27m
这两个至少会加载半小时。
--------------------------------------------------------------------------------------
至此,k8s集群也就部署完成了,完结,撒花!
但是有点问题,就是可视化界面部署有问题,可以用,命令行可以操作,或许是因为教程太老了。
评论区