k8s集群部署

1 主机名设置
```
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
```
2 设置hosts配置
```
cat >> /etc/hosts <<EOF
192.168.1.131  master
192.168.1.132  node1
192.168.1.133  node2
EOF
# 查看防火墙状态
firewall-cmd --state

# 查看防火墙开放的所有端口
firewall-cmd --zone=public --list-ports

# 开放端口命令
firewall-cmd --zone=public --add-port=5672/tcp --permanent

# 批量开放端口
firewall-cmd --permanent --zone=public --add-port=100-500/tcp

# 重新加载防火墙,配置完端口一定要执行重新加载才能生效
firewall-cmd --reload

```
3配置ssh密钥
```
# master节点执行 
# 生成ssh密钥,直接一路回车 
ssh-keygen -t rsa 
# 复制刚刚生成的密钥到各节点可信列表中,需分别输入各主机密码 
ssh-copy-id root@master ssh-copy-id root@node01 
# 配置完成后使用下面命令查看是否可以登录到目标服务器 
ssh 'root@master' 
# 退出 exit
```
4 禁用swap分区
```
# 所有节点服务器执行 
swapoff -a 
sed -i 's/.*swap.*/#&/' /etc/fstab
```
5 关闭SELinux
```
# 所有节点服务器执行 setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
```
6 设置时间同步
```
# 所有节点服务器执行 
# 设置时区 
timedatectl set-timezone Asia/Shanghai systemctl enable --now chronyd 
# 验证设置是否成功 
date 
# 查看同步状态 
timedatectl status 
# 输出结果中显示下列属性证明时钟同步正常 
System clock synchronized: yes NTP service: active 
# 将当前的UTC时间写入硬件时钟 
timedatectl set-local-rtc 0 
# 重启依赖于系统时间的服务 
systemctl restart rsyslog && systemctl restart crond
```
7 添加docker yum源
```
# 所有节点服务器执行 
# 安装必要依赖 
yum install -y yum-utils device-mapper-persistent-data lvm2 
# 添加aliyum docker-ce yum源 
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
# 重建yum缓存 
yum makecache
```
8 安装docker
```
# 所有节点服务器执行 
# 查看可用的docker版本 yum list docker-ce.x86_64 --showduplicates | sort -r
# 所有节点服务器执行 
# 安装指定版本docker,这里以19.03.12为例说明 
yum install -y docker-ce-19.03.12-3.el7
```
9 确保网络模块开机自动加载
```
# 所有节点服务器执行
lsmod | grep overlay 
lsmod | grep br_netfilter

# 所有节点服务器执行 
cat > /etc/modules-load.d/docker.conf <<EOF overlay br_netfilter EOF 
modprobe overlay 
modprobe br_netfilter
```
10 使桥接流量对iptables可见
```
# 所有节点服务器执行 
cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF 
sysctl --system 
# 验证是否生效,下面两个命令结果需均返回 1 
sysctl -n net.bridge.bridge-nf-call-iptables 
sysctl -n net.bridge.bridge-nf-call-ip6tables
```
11 配置docker
```
# 所有节点服务器执行 
mkdir /etc/docker 
# 修改cgroup驱动为systemd[k8s官方推荐]、限制容器日志量、修改存储类型,最后的docker根目录可修改 cat > /etc/docker/daemon.json <<EOF 
{
        "registry-mirrors": ["https://docker.1panelproxy.com"]
    }

EOF 
# 添加开机自启动,立即启动 
systemctl enable --now docker
```
12 验证docker是否正常
```
# 所有节点服务器均执行 
# 查看docker信息,判断是否与配置一致
docker info 
# hello-docker测试 
docker run --rm hello-world 
# 删除测试的image 
docker rmi hello-world
```
13添加kubernetes源
```
# 所有节点服务器均执行 
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 
# 重建yum缓存,输入y添加证书认证 
yum makecache
```
14 安装kubeadm、kubelet、kubectl
```
# 所有节点服务器均执行 # 安装 
yum install -y kubelet-1.18.5 kubeadm-1.18.5 kubectl-1.18.5 --disableexcludes=kubernetes
# 配置开机启动并立即启动kubelet 
systemctl enable --now kubelet
```
15 配置自动补全命令
```
# 所有节点服务器均执行 
# 安装bash自动补全插件 
yum install bash-completion -y 
# 设置kubectl与kubeadm命令补全,下次login生效
kubectl completion bash >/etc/bash_completion.d/kubectl 
kubeadm completion bash > /etc/bash_completion.d/kubeadm
```
16 预拉取kubernetes镜像 
```
# 所有节点服务器均执行 
# 查看执行kubernetes版本需要哪些镜像 
kubeadm config images list --kubernetes-version v1.18.5 
# 结果如下 
k8s.gcr.io/kube-apiserver:v1.18.5 
k8s.gcr.io/kube-controller-manager:v1.18.5 
k8s.gcr.io/kube-scheduler:v1.18.5 
k8s.gcr.io/kube-proxy:v1.18.5 k8s.gcr.io/pause:3.2 
k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/coredns:1.6.7
```
17 在`/root/k8s`目录下新建脚本`get-k8s-images.sh`,命令如下:
```
# 所有节点服务器均执行 
cd /root/ 
mkdir k8s 
cd k8s/ 
# 创建脚本文件,文件内容如下一代码段所示 
vi get-k8s-images.sh


#!/bin/bash
# Script For Quick Pull K8S Docker Images
# by Hellxz Zhang <hellxz001@foxmail.com>

KUBE_VERSION=v1.18.5
PAUSE_VERSION=3.2
CORE_DNS_VERSION=1.6.7
ETCD_VERSION=3.4.3-0

# pull kubernetes images from hub.docker.com
docker pull kubeimage/kube-proxy-amd64:$KUBE_VERSION
docker pull kubeimage/kube-controller-manager-amd64:$KUBE_VERSION
docker pull kubeimage/kube-apiserver-amd64:$KUBE_VERSION
docker pull kubeimage/kube-scheduler-amd64:$KUBE_VERSION
# pull aliyuncs mirror docker images
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$CORE_DNS_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION

# retag to k8s.gcr.io prefix
docker tag kubeimage/kube-proxy-amd64:$KUBE_VERSION  k8s.gcr.io/kube-proxy:$KUBE_VERSION
docker tag kubeimage/kube-controller-manager-amd64:$KUBE_VERSION k8s.gcr.io/kube-controller-manager:$KUBE_VERSION
docker tag kubeimage/kube-apiserver-amd64:$KUBE_VERSION k8s.gcr.io/kube-apiserver:$KUBE_VERSION
docker tag kubeimage/kube-scheduler-amd64:$KUBE_VERSION k8s.gcr.io/kube-scheduler:$KUBE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$CORE_DNS_VERSION k8s.gcr.io/coredns:$CORE_DNS_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION k8s.gcr.io/etcd:$ETCD_VERSION

# untag origin tag, the images won't be delete.
docker rmi kubeimage/kube-proxy-amd64:$KUBE_VERSION
docker rmi kubeimage/kube-controller-manager-amd64:$KUBE_VERSION
docker rmi kubeimage/kube-apiserver-amd64:$KUBE_VERSION
docker rmi kubeimage/kube-scheduler-amd64:$KUBE_VERSION
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$CORE_DNS_VERSION
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION


# 所有节点服务器均执行
# 添加脚本执行权限
chmod +x get-k8s-images.sh
# 执行脚本
./get-k8s-images.sh

```
17  初始化master节点
```
# master节点服务器执行

mkdir /var/lib/kubelet

cat > /var/lib/kubelet/config.yaml <<EOF
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF

然后初始化master
kubeadm init   --apiserver-advertise-address=192.168.1.131   --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.18.5   --service-cidr=10.96.0.0/12   --pod-network-cidr=10.244.0.0/16   --ignore-preflight-errors=all
并要保留最后一个toke
mkdir -p $HOME/.kube  
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
sudo chown $(id -u):$(id -g) $HOME/.kube/config
拷贝k8s的证书
```
18 下载网络互信
```
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml
ll
kubectl apply -f calico.yaml
kubectl get pods -n kube-system 
```
19 node节点加入master集群
```
node节点执行初始化的信息就可以了
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值