带你部署kubeadm

网友投稿 252 2022-09-08

带你部署kubeadm

一、部署步骤

在所有节点上安装Docker和kubeadm

部署Kubernetes Master

部署容器网络插件

部署 Kubernetes Node,将节点加入Kubernetes集群中

部署 Dashboard Web 页面,可视化查看Kubernetes资源

部署 Harbor 私有仓库,存放镜像资源

二、实验环境

master01 192.168.74.76node01 192.168.74.74node02 192.168.74.73

1、所有节点,关闭防火墙规则,关闭selinux,关闭swap交换

```html/xmlsystemctl stop firewalldsystemctl disable firewalldsetenforce 0iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -Xswapoff -a #交换分区必须要关闭sed -ri 's/.swap./#&/' /etc/fstab #永久关闭swap分区,&符号在sed命令中代表上次匹配的结果free -m查看

![image.png](https://s2./images/20220727/1658907241679104.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 2、修改主机名 ```css hostnamectl set-hostname master01 hostnamectl set-hostname node01 hostnamectl set-hostname node02 //所有节点修改hosts文件 vim /etc/hosts 192.168.74.76 master01 192.168.74.74 node01 192.168.74.73 node02

3、调整内核参数

cat > /etc/sysctl.d/kubernetes.conf << EOF #开启网桥模式,可将网桥的流量传递给iptables链 net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 #关闭ipv6协议 net.ipv6.conf.all.disable_ipv6=1 net.ipv4.ip_forward=1 EOF

4、docker安装

安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 设置阿里云镜像源 cd /etc/yum.r epos.d/ yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装docker-ce 社区版 yum install -y docker-ce #环境配置 vim /etc/selinux/config SELINUX=disabled systemctl start docker systemctl enable docker

5、所有节点配置K8S源

```html/xmlcat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]name=Kubernetesbaseurl=6、安装 kubelet、kubeadm、kubectl 组件 ```html/xml yum list|grep kube yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3 systemctl enable kubelet systemctl start kubelet

7、master节点制作

初始化```html/xmlkubeadm init --apiserver-advertise-address=192.168.74.76 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.21.3 --service-cidr=10.125.0.0/16 --pod-network-cidr=10.244.0.0/16

![image.png](https://s2./images/20220727/1658912023485075.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 8、创建K8S组件的家目录 提权(必做) mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 这个是加入master节点要用的token kubeadm join 192.168.74.76:6443 --token qv59up.esb0uuxhwbksa4fn \ --discovery-token-ca-cert-hash sha256:9ca76b8e839027e8712ad2a5ee786c5fa797e2a11e874dd192ef91f6cada6a70 ### 9、重新生成token #若token 过期或丢失,需要先申请新的token 令牌 kubeadm token create #列出token kubeadm token list | awk -F" " '{print $1}' |tail -n 1 #然后获取CA公钥的的hash值 openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^ .* //' #替换join中token及sha256: kubeadm join 192.168.74.76:6443 --token qv59up.esb0uuxhwbksa4fn \ --discovery-token-ca-cert-hash sha256:9ca76b8e839027e8712ad2a5ee786c5fa797e2a11e874dd192ef91f6cada6a70 ### 10、每个节点加入flannel网络 ```javascript kubectl apply -f \ https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ##或者使用镜像包导入的方式完成flannel的部署 kubectl label node node01 node-role.kubernetes.io/node=node kubectl label node node02 node-role.kubernetes.io/node=node

1、之前复制的toker令牌需要在node节点部署

kubeadm join 192.168.74.76:6443 --token qv59up.esb0uuxhwbksa4fn \ --discovery-token-ca-cert-hash sha256:9ca76b8e839027e8712ad2a5ee786c5fa797e2a11e874dd192ef91f6cada6a70

2、master节点上查看状态

3、解决不健康的节点问题

//如果 kubectl get cs 发现集群不健康,更改以下两个文件 vim /etc/kubernetes/manifests/kube-scheduler.yaml vim /etc/kubernetes/manifests/kube-controller-manager.yaml # 修改如下内容 把--bind-address=127.0.0.1变成--bind-address=192.168.80.10 #修改成k8s的控制节点master01的ip 把httpGet:字段下的hosts由127.0.0.1变成192.168.80.10(有两处) #- --port=0 # 搜索port=0,把这一行注释掉 systemctl restart kubelet

4、测试 pod 资源创建

![image.png](https://s2./images/20220727/1658923677492504.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 5、暴露pod对外的端口(暴露端口提供服务) ```html/xml kubectl expose deployment nginx --port=80 --type=NodePort

6、测试访问

7、扩展3个副本

```html/xmlkubectl scale deployment nginx --replicas=3

![image.png](https://s2./images/20220727/1658924835445913.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:企业运维实践-使用Aliyun容器镜像服务对海外gcr、quay仓库镜像进行镜像拉取构建
下一篇:时隔487天再战大满贯,费德勒速胜晋级法网次轮!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~