一、前置条件
在开始安装配置k8s集群之前,请确认以下前置条件:
- 在所有节点(Master和Worker)上禁用防火墙或者将必须的端口(如: 10250, 2379-2380, 6443, 10251-10252等)加入到了防火墙的白名单中。
- 所有节点的时间保持同步
- 所有节点的主机名和IP地址配置正确
二、安装Docker
Kubernetes是基于Docker容器技术构建的,因此在安装Kubernetes之前,我们需要先安装Docker。
- 安装Docker
yum install -y docker
- 启动Docker
systemctl start docker
systemctl enable docker
- 配置Docker镜像加速
在国内使用Docker官方镜像源的下载速度非常慢,因此我们需要配置一个Docker镜像加速器。
这里以阿里云镜像加速器为例,
将以下内容添加到 “/etc/docker/daemon.json” 文件中(如果文件不存在则创建它):
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
其中xxx为阿里云的镜像加速器地址。
然后重启Docker服务:
systemctl restart docker
三、安装Kubernetes
- 添加Kubernetes源
cat <<EOF >/etc/yum.repos.d/kubernetes.repo
[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
- 安装Kubernetes组件
yum install -y kubelet kubeadm kubectl
- 启动Kubernetes
systemctl start kubelet
systemctl enable kubelet
- 部署Kubernetes Master
在某一台节点上执行以下命令:
kubeadm init --apiserver-advertise-address=<master-node-ip> --pod-network-cidr=10.244.0.0/16
其中 --apiserver-advertise-address
参数为Master节点IP地址,--pod-network-cidr
参数为flannel网络使用的IP地址段。
执行完上面的命令后,会输出一个类似于下面的信息:
“`
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
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.31.30.10:6443 –token nxg6dk.z2gg5mq6gl4mplm3 \
–discovery-token-ca-cert-hash sha256:69cb50a94d3c2fd0d6e17464647bd83cdff18afcb447c99159c4f600494bf8a9
“`
备注:
- 执行前应该确保上述初始参数一定要正确;
kubeadm
命令执行完毕后,会在当前用户的$HOME/.kube/config
文件中生成一个 Kubernetes 的管理密钥(kubeconfig)文件。- 安装CNI插件
Kubernetes默认使用Flannel作为网络插件,我们可以通过以下方式来安装Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 加入Kubernetes节点
在所有的Kubernetes节点上执行以下命令:
kubeadm join <master-node-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
其中,<master-node-ip>
换成 master 节点的 IP 地址, <token>
和 <hash>
在执行 kubeadm init
命令时生成,可以在初始化成功后通过命令 kubeadm token create --print-join-command
查看。
四、验证Kubernetes集群
- 验证集群状态
执行以下命令,查看集群状态
kubectl get nodes
如果所有的节点都已经加入成功,会输出类似于以下信息:
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 3m2s v1.22.2
k8s-node1 Ready <none> 2m6s v1.22.2
k8s-node2 Ready <none> 2m6s v1.22.2
- 部署一个简单的应用
创建一个简单的nginx pod,并暴露到NodePort上:
kubectl run nginx --image=nginx --replicas=1 --port=80
kubectl expose pod nginx --type=NodePort --port=80 --name=nginx-service
查看部署状态:
kubectl get pods
kubectl get svc
输出以下信息,证明nginx pod部署成功:
“`
NAME READY STATUS RESTARTS AGE
nginx-d8b54f4cb-5bk7s 1/1 Running 0 43s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service NodePort 10.100.49.182
“`
现在打开一个浏览器,访问任意一台节点IP地址加上30584端口号,如果出现nginx默认的欢迎页面,则证明部署成功。
以上就是CentOS 7上使用kubeadm安装配置Kubernetes的全部过程。