0
点赞
收藏
分享

微信扫一扫

带你部署kubeadm

在觉 2022-07-27 阅读 100

一、部署步骤

在所有节点上安装Docker和kubeadm

部署Kubernetes Master

部署容器网络插件

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

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

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

二、实验环境

master01 192.168.74.76
node01 192.168.74.74
node02 192.168.74.73

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

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

![image.png](https://s2.51cto.com/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

//生效参数
sysctl --system
image.png

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/xml
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


### 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/xml
kubeadm 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.51cto.com/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

image.png

image.png
三、node节点加入master节点

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

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

image.png

2、master节点上查看状态

image.png
image.png

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

image.png

image.png

4、测试 pod 资源创建

kubectl create deployment nginx --image=nginx
image.png
image.png
```html/xml
kubectl describe pod nginx-6799fc88d8-pkntt -n default
可以查看这个pod的事件

![image.png](https://s2.51cto.com/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

image.png

6、测试访问

image.png

7、扩展3个副本

```html/xml
kubectl scale deployment nginx --replicas=3


![image.png](https://s2.51cto.com/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=)
举报

相关推荐

0 条评论