K8S的kubeadm安装单个集群

一、kubelet

1、Kubelet,一个负责 Kubernetes 控制平面和 Node 之间通信的进程;它管理在机器上运行的 Pod 和容器。

2、容器运行时(如 Docker)负责从注册表中拉取容器镜像、解包容器并运

行应用程序

二、组件

Master主控节点

1、apiserver

集群统一入口,以restful方式,交给etcd存储。

2、scheduler

节点调度,选择node节点应用部署

3、controller-manager

处理集群中常规后台任务,一个资源对应一个控制器。

4、etcd

存储系统,用于保存集群相关数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dqvlk2dS-1633918257757)(C:\Users\211\AppData\Roaming\Typora\typora-user-images\image-20210928151401736.png)]

node工作节点

1、kubelet

master派到node节点代表,管理本机容器。

2、kube-proxy

提供网络代理,负载均衡。

三、概念

1、pod

最小部署单元

一组容器的集合

共享网络

生命周期是短暂

2、controller

确保预期的pod副本数量

无状态应用部署

有状态应用部署

确保所有的node运行同一个Pod

一次性任务和定时任务

3、service

定义一组pod的访问规则

四、k8s环境平台规划

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5d33t7xm-1633918257759)(C:\Users\211\AppData\Roaming\Typora\typora-user-images\image-20210928153724798.png)]

1、部署集群的方式

1)kubeadm

2)二进制包

2、准备需求

集群互ping

访问外网

禁止swap分区

五、kubeadmin

1、初始化操作

1、创建虚拟机3台

2、禁止swap分区

swapoff -a //临时
sed -ri 's/.*swap.*/#&/' /etc/fstab  //永久

3、关闭防火墙

systemctl stop firewalld   //临时关闭
systemctl disable firewalld  //永久关闭

4、关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config   //永久
setenforce 0   //临时关闭

5、给主机取名称

hostnamectl set-hostname k8smaster     /k8snode1/k8snode2   //修改主机名

6、在master添加hosts

cat >> /etc/hosts <<EOF
172.21.50.35 k8smaster
172.21.50.36 k8snode1
172.21.50.37 k8snode2
EOF

7、将桥接的ipv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-iptable = 1
EOF
sysctl --system   //生效

8、时间同步

yum install ntpdate -y
ntpdate time.windows.com

2、安装三方支持

1)、安装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-18.06.1.ce-3.e17
systemctl enable docker && systemctl start docker    //开机启动
docker --version
//查看镜像
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
docker info //查看镜像源是否改成功

2)、添加阿里云yum软件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-e17-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
//这个不行
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=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

3)、安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet

4)、在master机器上执行

kubeadm init \
--apiserver-advertise-address=172.21.50.35 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
//去掉斜杠,把命令集中在一行执行

kubeinit 执行后的效果,里面的mkdir在主节点执行,kubejoin在子节点执行

注释:由于外国的k8s不能访问,该成阿里云。

master主机地址改成自己的。

5)、在master机器上执行

mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

3、加入节点到主节点

kubeadm join 172.21.50.35:6443 --token gnlql3.0xj8y9kkle7630ll \
    --discovery-token-ca-cert-hash sha256:589006c1952acdd4c8208551a63088519e8002c4ee9697b47d466c741d817e9b
kubectl get nodes   //获取节点信息

4、部署CNI网络插件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

注释:默认镜像地址无法访问,sed命令修改为docker hub镜像仓库。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl get pods -n kube-system

5、测试

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort   //对外暴露端口
kubectl get pod,svc   //查看信息

六、常用命令

kubectl get pods  //获取pod信息
kubectl get nodes  //获取nodes信息

七、查询kube join

kubeadm token create --print-join-command

八、子节点断电重启

1、追踪日志

journalctl -f -u kubelet

2、重启docker

systemctl daemon-reload
systemctl restart docker

3、重启kubelet

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值