环境准备
四台Centos7虚拟机:
10.15.5.230 ks-master
10.15.5.231 k8s-node1
10.15.5.232 k8s-node2
10.15.5.233 k8s-node3
基础设置
修改主机名以及hosts文件(全部主机)
hostnamectl set-hostname myhostname(分别修改主机的主机名)
# 修改hosts文件
cat <<EOF >  /etc/sysctl.d/k8s.conf
10.15.5.230 k8s-master
10.15.5.231 k8s-node1
10.15.5.232 k8s-node2
10.15.5.233 k8s-node3
EOF
关闭防火墙(测试环境省事)
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
vim /etc/selinux/config
SELINUX=disable
关闭交换分区
## 将/etc/fstab中swap的设置注释掉
vim /etc/fstab
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

PS:这些全部配置完成之后重启一下服务器:reboot

安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
um-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
启动docker
systemctl start docker
systemctl enable docker
docker version

在这里插入图片描述
PS:在安装完成之后只有启动了才会显示server以及client,不启动只有client。这两个都显示则说明docker已经安装完成并且正常启动了。

配置docker的镜像加速

首先,你需要一个阿里云的帐号,没有的自己去注册~
登录阿里云控制台,可以直接在搜索栏搜docker镜像加速,然后进入docker镜像加速控制台
在这里插入图片描述
以下为我的加速器代码块

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://kgo7ly9t.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装kubernetes
配置国内源

由于国内网络原因, 官方文档中的地址不可用, 这边换成阿里的源

vim /etc/yum.repos.d/k8s.repo
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kube*
安装&启动
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet
systemctl start kubelet
修改网络设置
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system

在这里插入图片描述
PS:以上配置需要在node节点也执行

初始化Master节点
kubeadm config print init-defaults > kubeadm-init.yaml
修改所生成文件

以下为修改内容:

[root@k8s-master ~]# cat kubeadm-init.yaml |egrep "advertiseAddress|imageRepository"
  advertiseAddress: 10.15.5.230  //修改为本机地址,也就是你master的地址
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

修改完成后文件内容如下

[root@k8s-master ~]# cat kubeadm-init.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.15.5.230
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: k8s-master
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.19.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
scheduler: {}

下载镜像
kubeadm config images pull --config kubeadm-init.yaml
开始初始化
kubeadm init --config kubeadm-init.yaml

完成后会输出以下内容:
在这里插入图片描述
此处最后两行记得保存一下,为node节点加入集群命令:

kubeadm join 10.15.5.230:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:d088818dfbcd88a133a2daedd29e923601d66f2a1f7d6c1b8d1d4d1785a079d4 
配置环境变量
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

使当前用户可以执行kubectl命令。

配置网络
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
cat kubeadm-init.yaml | grep serviceSubnet:

在这里插入图片描述

初始化网络
kubectl apply -f calico.yaml
查看node信息
kubectl get node

在这里插入图片描述

安装Dashboard
下载&部署
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml
查看pods状态
kubectl get pods --all-namespaces

在这里插入图片描述

创建登录用户
[root@k8s-master ~]# cat dashboard-adminuser.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

kubectl apply -f dashboard-adminuser.yaml
生成证书
grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"

PS:最后一条命令过程中输入密码处直接回车就好。
kubecfg.p12是证书文件,需要在浏览器导入,不然在输入master ip+端口后会有如下报错
在这里插入图片描述
解决方法就是将上面生成的证书文件导入浏览器,我用的是谷歌浏览器。
浏览器右上角,找到设置
在这里插入图片描述
Privacy and security 中 Security
在这里插入图片描述
进去之后往下滑,找到Manage certificates

在这里插入图片描述
在 Your certficates 中点击Import按钮,导入上面生成的证书文件
导入成功后下面会有:org-system:masters
在这里插入图片描述

登录
https://10.15.5.230:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

在这里插入图片描述
这边选择token登录
查看token:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

在这里插入图片描述登录成功:
在这里插入图片描述

添加node节点

准备工作在三台node上完成,这里就不再写了,和上面一样

将node加入集群
kubeadm join 10.15.5.230:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:d088818dfbcd88a133a2daedd29e923601d66f2a1f7d6c1b8d1d4d1785a079d4

PS:该命令为初始化完成后让保留的那两行,忘记了的可以去上面看看。

命令行查看节点状态
kubectl get nodes

在这里插入图片描述

Dashboard 查看节点状态

在这里插入图片描述
kubeadm方式搭建就到这里了,后面二进制安装等我学会再更新~

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐