简介

k8s 有很多种安装方式

本文使用kubeadm安装

软件环境

  • Centos: 7.3
  • Docker: 18.06.1-ce
  • Kubernetes: 1.16.2

实验服务器信息

服务器建议2核4G以上配置

  • master: 192.168.5.90
  • node01: 192.168.5.91
  • node02: 192.168.5.92

环境准备

所有节点都执行

修改主机名

管理节点

hostnamectl set-hostname master

其他节点

hostnamectl set-hostname node01

hostnamectl set-hostname node02
...

添加hosts解析

cat <<EOF >>/etc/hosts

192.168.5.90 master
192.168.5.91 node1
192.168.5.92 node2

EOF

关闭防火墙、selinux和swap

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

配置内核参数,将流量转到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

配置yum源

yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache

配置国内k8s源

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=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

配置docker源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

软件安装

docker&&kubectl安装

所有节点执行

安装docker

yum install -y docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker version

安装kubeadm、kubelet、kubectl

yum install -y kubelet kubeadm kubectl

systemctl enable kubelet

部署master节点

在master节点执行

初始化k8s集群

kubeadm init --kubernetes-version=1.16.2 \
--apiserver-advertise-address=192.168.5.90 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

定义POD的网段为: 10.244.0.0/16, api server地址就是master本机IP地址。
这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。

执行成功后会出现下面的信息:

kubeadm join 192.168.5.90:6443 --token kekvgu.nw1ndasdaoncomj6 \
--discovery-token-ca-cert-hash sha256:1s3chdadqwop08ca62f2dou983h40jnafa4d50e6634acfaa8291f28582codaihsdoinci

配置kubectl工具

mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
kubectl get nodes
kubectl get cs

部署flannel网络

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

部署node节点

在所有node节点上执行

加入k8s集群

kubeadm join 192.168.5.90:6443 --token kekvgu.nw1ndasdaoncomj6 \
--discovery-token-ca-cert-hash sha256:1s3chdadqwop08ca62f2dou983h40jnafa4d50e6634acfaa8291f28582codaihsdoinci

此命令为集群初始化时(kubeadm init)返回结果中的内容。

集群状态检测

在master节点上执行

kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   3d5h   v1.14.3
node1    Ready    <none>   3d5h   v1.14.3
node2    Ready    <none>   3d5h   v1.14.3

部署Dashboard

在master上操作

创建Dashboard的yaml文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

编辑kubernetes-dashboard.yaml文件

sed -i 's/k8s.gcr.io/registry.cn-hangzhou.aliyuncs.com\/kuberneters/g' kubernetes-dashboard.yaml
sed -i '/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' kubernetes-dashboard.yaml

部署Dashboard

kubectl create -f kubernetes-dashboard.yaml

查看相关服务

kubectl get deployment kubernetes-dashboard -n kube-system

kubectl get pods -n kube-system -o wide

kubectl get services -n kube-system

netstat -ntlp|grep 30001

查看访问Dashboard的认证令牌

kubectl create serviceaccount  dashboard-admin -n kube-system
kubectl create clusterrolebinding  dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

返回信息

Name:         dashboard-admin-token-xr4rq
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 6b103593-ee1f-11e9-93b4-001a4ae62b23

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4teHI0cnEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNmIxMDM1OTMtZWUxZi0xMWU5LTkzYjQtMDAxYTRhZTYyYjIzIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.WlETClsc1_AY5_b3stvMArjVCnZvt_pvIzd7bKjRQY14P7bWRciCCVk611Drcr7uPXl1oCvUUHvi6g3nwtec9sG7BRqWl5hPAMmzI9xZlr_N1FRkWL520mSIP0yHtXYBBVIkRheyXrOkz4VeGsHBCOv5jQLl9Mo-hHhIdMuTfKNSWmdmLv50xgi_tYdb9JokswIGjJ2oyzLyXqJ8nFvsMiKyfvwgQ8kixBeKusLx5oUroqJfRVVakYfxcqpxpD2ywe9qhoZC0xWlpx07YDogA5EB8cyClnJ-sgNE3emEMRNdxC_XyTxhJ1CnvpKo6_t16TFdGAz6QG-lgTLgZa5xGQ

浏览器打开

https://192.168.5.90:30001

再输入上面服务器返回的token

Logo

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

更多推荐