k8s-03-2-kubeadm安装

系统规划

在这里插入图片描述

节点信息

在这里插入图片描述
Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部
署 Kubernetes 集群。,这个工具能通过两条指令完成一个 kubernetes 集群的部署:

  • 第一、创建一个 Master 节点 kubeadm init
  • 第二, 将 Node 节点加入到当前集群中 $ kubeadm join <Master 节点的 IP 和端口 >

官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

所有节点安装 Docker/kubeadm/kubelet

安装docker
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O
/etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce
$ systemctl enable docker && systemctl start docker

添加kubernetes  yum 源
cat > /etc/yum.repos.d/kubernetes.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

安装 kubeadm,kubelet 和 kubectl ,会自动安装几个重要依赖包:socat,cri-tools,cni等包
#查看版本 yum list kubelet 
# 列出所有版本 yum list kubelet  --showduplicates | sort -r
$ yum install -y kubelet kubeadm kubectl
$ systemctl enable kubelet

部署 Kubernetes Master

在 (Master)执行

$ kubeadm init \
--apiserver-advertise-address=192.168.44.129 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

当前节点IP (master ) 192.168.44.129
镜像 (由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址。)
这个过程比较慢,可以使用 docker images查看拉取的镜像
kube-proxy v1.19.4
kube-apiserver v1.19.4
kube-controller-manager v1.19.4
kube-scheduler v1.19.4
etcd 3.4.13-0
coredns 1.7.0
pause 3.2
版本 指定安装版本 v1.19.4
pod-network-cidr 10.244.0.0/16 flannel使用的是这个网段

安装成功提示:

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 ( i d − u ) : (id -u): (idu):(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 192.168.44.129:6443 --token ttnu3m.97oxzty62fgk7ms6
–discovery-token-ca-cert-hash sha256:e60d00ddef29c30a562bb87c9bf8d81ea1c5db9a5b607a42c3cff0c4cdb059ca

按照提示,主节点执行

# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看结果 【节点处于NotReady状态,因为还没有网络组建,下一步安装flannel】
 # kubectl get nodes 

节点加入

# kubeadm join 192.168.44.129:6443 --token ttnu3m.97oxzty62fgk7ms6 \
    --discovery-token-ca-cert-hash sha256:e60d00ddef29c30a562bb87c9bf8d81ea1c5db9a5b607a42c3cff0c4cdb059ca
查看结果 【节点处于NotReady状态,因为还没有网络组建,下一步安装flannel】
 # kubectl get nodes  

但是我们在当时如果没记下这个命令,可能后续加节点的时候就忘记了这个命令,此时需要执行如下命令即可: kubeadm token create --print-join-command

安装 Pod 网络插件(CNI) 主节点

kubernetes支持多种开源的网络CNI插件,常见的有flannel、calico、canal、weave等,flannel是一种overlay的网络模型,通过vxlan隧道方式构建tunnel网络

# For Kubernetes v1.17+
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 查看 -n 指定命名空间,默认是default系统组建都安装在kube-system
# -o wide 查看详细情况  -w 监控变化
kubectl get pods -n kube-system -o wide
kubectl get nodes 

国外镜像,会失败,多试几次 也能成功

验证
查看kubernetse服务组件状态,包括scheduler,controller-manager,etcd

#查看master组件角色
kubectl get componentstatuses 
#查看node节点列表
kubectl get nodes
# 查看节点标签信息
kubectl get node --show-labels
#查看node节点详情
kubectl describe node k8s.node1.com

在 Kubernetes 集群中创建一个 pod,验证是否正常运行:

$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
-- svc查看服务端口   -o wide pod详细信息
$ kubectl get pod,svc -o wide
# 将资源的配置以yaml的格式输出出来。也可以使用json输出json格式
$ kubectl get pod xxx -o yaml

访问地址:http://NodeIP:32606 【80端口被映射到 32606,所有节点都暴漏这个端口 】
在这里插入图片描述
删除节点

首先(drain 卸载、 delete删除):
kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node name>
然后使用
kubeadm reset
若需要重新加入 ,则再次执行 kubeadm init or kubeadm join

常见问题&解决方案

问题:[ERROR CRI]: container runtime is not running: output: E0815 18:19:36.279228 21409 remote_runtime.
方案:
[root@master:~] rm -rf /etc/containerd/config.toml
[root@master:~] systemctl restart containerd

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值