k8s及docker安装步骤见博客:CentOS7安装k8s及对应版本docker
一、准备镜像
执行下面的脚本(针对kubernetes-version=1.21.0):
images=(
kube-apiserver:v1.21.0
kube-proxy:v1.21.0
kube-controller-manager:v1.21.0
kube-scheduler:v1.21.0
etcd:3.4.13-0
pause:3.4.1
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
docker rmi coredns/coredns:1.8.0
再更改标签内容:
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver k8s.gcr.io/kube-apiserver:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0 k8s.gcr.io/kube-proxy:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0 k8s.gcr.io/kube-scheduler:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0 k8s.gcr.io/kube-controller-manager:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 k8s.gcr.io/pause:3.4.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
二、安装Master
1. 禁用swap
在安装master之前,需要先禁用swap功能。
第1步:
swapoff -a
第2步:
vi /etc/fstab
注释掉下面这一行:
# /dev/mapper/centos-swap swap swap defaults 0 0
2. 修改系统配置
- 网络模块
cd /proc/sys/net/bridge
echo '1' > bridge-nf-call-iptables
- 安全模块
vi /etc/sysconfig/selinux
将SELINUX=enforcing
改为 SELINUX=disabled
,重启服务器
3. 初始化Master
kubeadm init --kubernetes-version=1.21.0
过程有点长,要耐心等待。
启动成功后会看到下面的内容:
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 192.168.145.128:6443 --token 5nu022.oej4pv97ga97bxit \
--discovery-token-ca-cert-hash sha256:1f4c0da08e19492d3629424f995b2b7891d40d81bdeb5283d5e74de2a7a9b69e
按照提示,复制相应的配置到普通用户的home目录下,或者root用户执行命令配置环境变量。
在这里首先要恭喜你,Master搭建这一步已成功走完。
三、安装Node
1. 非单机模式
执行kubeadm join
命令,加入集群:
kubeadm join 192.168.145.128:6443 --token 5nu022.oej4pv97ga97bxit \
--discovery-token-ca-cert-hash
没错,这个命令就是Master节点安装成功后的提示里的内容。
2. 单机模式(All-In-One)
如果希望安装一个单机的All-In-One的kubernetes环境,则可以执行下面的命令:
kubectl taint nodes --all node-role.kubernetes.io/master-
显示结果:
[root@192 ~]# kubectl taint nodes --all node-role.kubernetes.io/master-
node/192.168.145.128 untainted
四、安装网络插件
运行如下命令,发现Master节点STATUS是NotReady
状态,这是因为还没有安装CNI网络插件。
[root@192 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
192.168.145.128 NotReady control-plane,master 17m v1.21.0
1. 安装flannel
sysctl net.bridge.bridge-nf-call-iptables=1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml