k8s集群安装

k8s官方文档:Kubernetes 文档 | Kubernetes

  服务配置为一主两从:

k8s-master: 192.168.88.137

k8s-node1: 192.168.88.139

k8s-node2: 192.168.88.140

  安装环境为VMware上的Centos 7,要求配置至少为2核2G,Centos镜像下载:

链接:https://pan.baidu.com/s/1eL4SmkbPBU19spmVu1IYQw

提取码:4frp

安装 docker

  首先需要在三台服务器上安装docker。

  • 安装docker的yum源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 安装docker
yum -y install docker-ce-18.06.1.ce-3.el7
  • 设置docker开机启动
systemctl enable docker && systemctl start docker
  • 检查docker是否安装成功
docker -v

  打印如下即安装成功:

image20211220203848746.png

准备工作

  在安装k8s之前,需要对三台服务器进行一些环境准备工作,需要三台机器都执行一下操作。

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 永久关闭selinux
vim /etc/sysconfig/selinux 

  如下,将SELINUX设置为disabled:

image.png

  • 再临时关闭selinux
setenforce 0
  • 关闭swap

  先临时关闭:

swapoff -a

  永久关闭:

sed -i.bak '/swap/s/^/#/' /etc/fstab

  重启生效:

systemctl reboot

  查看下swap交换区是否都为0,如果都为0则swap关闭成功

free ‐m
  • 给三台机器分别设置主机名
hostnamectl set-hostname <hostname>

  第一台:k8s-master

  第二台:k8s-node1

  第三台:k8s-node2

  • 修改hosts文件,注意替换为自己服务器的ip
cat <<EOF > /etc/hosts 
192.168.88.137 k8s-master
192.168.88.139 k8s-node1
192.168.88.140 k8s-node2
EOF
  • 将桥接的IPv4流量传递到iptables

  修改内核参数:

vim /etc/sysctl.d/k8s.conf

  加上配置:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

  执行命令使配置生效:

sysctl -p /etc/sysctl.d/k8s.conf
  • 设置时间同步
yum install ntpdate -y
ntpdate time.windows.com
  • 添加k8s yum
cat <<EOF > /etc/yum.repos.d/kubernetes.repo 
[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
  • 如果之前安装过k8s,先卸载旧版本
yum remove ‐y kubelet kubeadm kubectl
  • 查看可安装的版本
yum list kubelet --showduplicates | sort -r
  • 安装kubeletkubeadmkubectl 指定版本,我们使用kubeadm方式安装k8s集群
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0

  如果报错如下:

image.png

  解决方案,新建一个python文件:

cd /usr/lib/python2.7/site-packages/
touch sitecustomize.py
vim sitecustomize.py

  文件里面写入如下内容:

import sys
sys.setdefaultencoding('UTF-8')
  • 设置开机启动k8s
systemctl enable kubelet && systemctl start kubelet

配置集群

  • k8s-master机器上执行初始化操作,第一个ip是当前机器ip,后面两个固定
kubeadm init --apiserver-advertise-address=192.168.88.137 --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

  如果发生如下错误:
image.png
  执行命令:

kubeadm reset

  如发生下面错误:

image.png

  删除该文件:

rm -rf /var/lib/etcd

  执行 成功后显示如下:

image.png

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.88.137:6443 --token j7g3dx.71lrimwdqpm9ye1v \
    --discovery-token-ca-cert-hash sha256:a83ca369b401c53155f36865a4720c3c45e99ae5d58a5ce3cb000c5f4ef36f27 
  • 在主节点执行提示的命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 查看kubectl能否正常使用
kubectl get nodes
  • 安装Pod网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

  如果上面的不成功,可以试试下面这个:

 kubectl apply ‐f https://raw.githubusercontent.com/coreos/flannel/mast
er/Documentation/kubeflannel.yml
  • 在所有的子节点的服务器上执行上面提示的加入集群的命令
kubeadm join 192.168.88.137:6443 --token j7g3dx.71lrimwdqpm9ye1v \
    --discovery-token-ca-cert-hash sha256:a83ca369b401c53155f36865a4720c3c45e99ae5d58a5ce3cb000c5f4ef36f27 
  • 在主节点机器执行查看节点命令,可以看到各节点状态,至此集群搭建完毕
kubectl get nodes

image.png

公网部署

  • 将下面命令的--apiserver-advertise-address=192.168.88.137的ip地址改为服务器的公网ip:
kubeadm init --apiserver-advertise-address=192.168.88.137 --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 
  • 当命令运行阻塞至以下信息时候,新建一个服务器连接,修改etcd.yaml文件:
      阻塞信息:
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s

  新建一个服务器连接,修改etcd.yaml

vim /etc/kubernetes/manifests/etcd.yaml

  将其中的三行修改为:

    - --listen-client-urls=https://127.0.0.1:2379
    - --listen-metrics-urls=http://127.0.0.1:2381
    - --listen-peer-urls=https://127.0.0.1:2380
  • 关闭新的连接,等待安装完成,其他过程不变
  • 使用 iptables IP 重定向,使系统访问工作节点内网 IP 时转而访问工作节点的外网 IP
iptables -t nat -A OUTPUT -d <内网 IP> -j DNAT --to-destination <外网 IP>

可视化界面安装

  • 通过命令安装dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
如果无法下载,则直接用下面的地址:
kubectl apply -f https://blog.fpg.ink/upload/2022/01/recommended-e261700d70b6468092438e65596ad9b1.yaml
  • 设置访问端口,将type: ClusterIP 改为 type: NodePort
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
  • 创建访问账号,创建一个文件dash.yaml

​ 直接执行命令

kubectl apply -f https://blog.fpg.ink/upload/2022/01/dash-538a89b6db6f4de9a5eb420cc5f783aa.yaml

​ 或者:

#创建访问账号,准备一个yaml文件; vi dash.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
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: kubernetes-dashboard

​ 执行命令

kubectl apply -f dash.yaml
  • 获取访问令牌
#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
eyJhbGciOiJSUzI1NiIsImtpZCI6InhicXE1M3VnTXlnMnVLX2VlQ1N0SjFNNC1mU05Gd1RKcnBLT2pSd3VUNVUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXE4NmtmIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI0Nzc3ZGY2Yi0zNjBiLTQ1M2MtYjI2My03ODNjZWVkYWY1NDciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.nNu_ToT1Fu8zEHE5KON5W29FQFTVE0hHT6R5JUx8LMVcI06wF7n1VwpD7d8EEgAx3MalOdjF7C6LbAGQwLQdsPm5v7q9DPSeLw-0dJ7CPMrv8C4UBSSUn3qGCRQhDa0QGIjfvge99CVPkgm-kwIgFubqOb7dZmQozS44qPdZ2O3Mad758M2BBdKHQjPzFtxHyJMrEKIj374mdMJaaIsTCNpovIakFbsgwapqGHe2N4n281HqiS0RvGYD5XSXKSN2irG7vjb-cBX81ntX-7aXgdyPC6Eu0Qt4OSIemuWuf7T-8CVttQWm12rrZKkZRdMFXiYjf18oPUIwanjIktB8ag
  • 获取端口映射信息
kubectl get svc -A

image.png

  • ​ 访问https://192.168.88.137:31927,输入令牌即可访问,输入刚刚获取到的token即可进入
    image.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值