k8s搭建-安装Kubernetes集群(三)
安装 Kubernetes集群1、首先配置yum源官方yum源的地址为 https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64。如果无法访问官方yum源的地址,则也可以使用国内的一个yum源,地址为 http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-
安装 Kubernetes集群
1、首先配置yum源
官方yum源的地址为 https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64。
如果无法访问官方yum源的地址,则也可以使用国内的一个yum源,地址为 http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/。
yum源的配置文件/etc/yum.repos.d/kubernetes.repo的内容如下:
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
2、安装kubeadm和相关工具
运行yum install命令安装kubeadm和相关工具:
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
启动Docker服务和kubelet服务,并设置为开机自动启动:
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
3、kubeadm config
kubeadm已经进入GA阶段,其控制面初始化和加入节点步骤都支持 大量的可定制内容,因此kubeadm还提供了配置文件功能用于复杂定制。同时,kubeadm将配置文件以ConfigMap的形式保存到集群之中, 便于后续的查询和升级工作。kubeadm config子命令提供了对这一组功能的支持:
序号 | 命令 | 说明 |
---|---|---|
1 | kubeadm config upload from-file | 由配置文件上传到集群中生 成ConfigMap |
2 | kubeadm config upload from-flags | 由配置参数生成ConfigMap |
3 | kubeadm config view | 查看当前集群中的配置值 |
4 | kubeadm config print init-defaults | 输出kubeadm init默认参数文件的内容 |
5 | kubeadm config print join-defaults | 输出kubeadm join默认参数文件的内容 |
6 | kubeadm config migrate | 在新旧版本之间进行配置转换 |
7 | kubeadm config images list | 列出所需的镜像列表 |
8 | kubeadm config images pull | 拉取镜像到本地 |
执行kubeadm config print init-defaults,可以取得默认的初始化参数文件:
kubeadm config print init-defaults > init.defaults.yaml
修改默认配置文件init.defaults.yaml
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.21.0
apiServer:
timeoutForControlPlane: 4m0s
networking:
dnsDomain: cluster.local
serviceSubnet: 192.168.0.0/16
scheduler: {}
4、下载k8s的相关镜像
使用config images pull子命令下载所需镜像
kubeadm config images pull --config=init.defaults.yaml
报错,主要错误:
Kubernetes version: v1.21.1,依赖/coredns/coredns:v1.8.0,registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0 不存在
本地执行以下命令:
docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:v1.8.0
5、安装Master
运行kubeadm init
命令安装Master
kubeadm init --config=init.defaults.yaml
这里需要注意kubeadm init命令执行完成后的最后几行提示信息,其中包含加入节点的指令(kubeadm join)和所需的Token。
按照提示执行下面的命令,复制配置文件到普通用户的home目录 下:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
这样就在Master上安装了Kubernetes,但在集群内还是没有可用的 工作Node,并缺乏对容器网络的配置。
用kubectl命令查看ConfigMap:
kubectl get -n kube-system configmap
可以看到其中生成了名为kubeadm-config的ConfigMap对象。
6、安装Node,加入集群
对于新节点的添加,系统准备和Kubernetes yum源的配置过程是一致的,在Node主机上执行下面的安装过程。
这里直接一键安装
6.1、创建init-k8s.sh文件
vim init-k8s.sh
#!/bin/bash
tee /etc/yum.repos.d/kubernetes.repo <<-'EOF'
[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
if [ $? = 0 ];then
echo "依赖包安装完成"
else
echo "依赖包安装失败,正在退出..."
exit 1
fi
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
添加执行权限
chmod a+x init-k8s.sh
执行一键安装文件
./init-k8s.sh
6.2、切换到master节点操作
- 生成token
kubeadm token generate
- 根据token输出添加命令
kubeadm token create 7r3l16.5yzfksso5ty2zzie --print-join-command --ttl=0
6.3、将本Node加入集群
执行kubeadm join命令(上一步中生成的命令),将本Node加入集群:
kubeadm join 192.168.200.110:6443 --token q0781o.36hkdmnw191g7s9g --discovery-token-ca-cert-hash sha256:c33ef39298513eb8c7879ee21f58eac314c0e22de35465e4a717efd31e9ef9d8
kubeadm在Master上也安装了kubelet,在默认情况下并不参与工作 负载。如果希望安装一个单机All-In-One的Kubernetes环境,则可以执行 下面的命令(删除Node的Label“node-role.kubernetes.io/master”),让Master成为一个Node:
kubectl taint nodes --all node-role.kubernetes.io/master-
7、安装网络插件
执行kubectl get nodes
命令,会发现Kubernetes提示Master为 NotReady状态,这是因为还没有安装CNI网络插件:
kubectl get nodes
下面根据kubeadm的提示安装CNI网络插件。对于CNI网络插件,可以有许多选择,请参考https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network的说明。
例如,选择weave插件,执行下面的命令即可一键完成安装:
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
8、验证集群是否安装完成
执行下面的命令,验证Kubernetes集群的相关Pod是否都正常创建并运行:
kubectl get pods --all-namespaces
如果发现有状态错误的Pod,则可以执行kubectl --namespace=kube-system describe pod<pod_name>
来查看错误原因,常见的错误原因是镜像没有下载完成。
至此,通过kubeadm工具就实现了Kubernetes集群的快速搭建。如果安装失败,则可以执行kubeadm reset命令将主机恢复原状,重新执行kubeadm init命令,再次进行安装。
更多推荐
所有评论(0)