部署前准备(需要root账号)

节点主机名唯一,建议写入/etc/hosts

禁止swap分区

关闭防火墙


root@haishu:/home/haishu# hostnamectl set-hostname k8s-master
root@haishu:/home/haishu# tail /etc/hosts

127.0.1.1	haishu-System-Product-Name

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.120.163 slave02
192.168.120.160 master
root@haishu:/home/haishu# ufw status
状态:不活动

安装必要的工具

step 1: 安装必要的一些系统工具

apt-get -y install apt-transport-https ca-certificates curl software-properties-common

step 2: 安装GPG证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -

Step 3: 写入软件源信息

add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

Step 4: 更新并安装 Docker-CE

apt-get -y update

安装指定版本的Docker-CE:

Step 1: 查找Docker-CE的版本:

apt-cache madison docker-ce

sudo apt-get -y install docker-ce=[VERSION] //安装格式

apt-get -y install docker-ce=18.06.3~ce~3-0~ubuntu

配置docker-hub源

tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload && systemctl restart docker

docker-ce安装请参考阿里云文档:https://yq.aliyun.com/articles/110806

安装kubeadm

注意:建议kubelet、kubeadm、kubectl 跟kubernetes dashboard最新的支持版本一直

https://github.com/kubernetes/dashboard/releases/tag/v2.0.0-beta4

apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

新增源

add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
apt-get update
apt-cache madison kubelet kubectl kubeadm |grep '1.15.4-00'         //查看1.15的最新版本
apt install -y kubelet=1.15.4-00 kubectl=1.15.4-00 kubeadm=1.15.4-00        //安装指定的版本

###配置kubelet禁用swap

tee /etc/default/kubelet <<-'EOF'
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
EOF
systemctl daemon-reload && systemctl restart kubelet

注意:目前kubelet服务是启动异常的由于缺少很多参数配置文件,需要等待kubeadm init 后生成,就会自动启动了
部署到服务器

npm run build

初始化k8s

kubeadm init \
  --kubernetes-version=v1.15.4 \
  --image-repository registry.aliyuncs.com/google_containers \
  --pod-network-cidr=10.24.0.0/16 \
  --ignore-preflight-errors=Swap

###kubectl配置调用

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

###k8s网络(用的flannel的overlay 实现多节点pod通信)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged configured
clusterrole.rbac.authorization.k8s.io/flannel unchanged
clusterrolebinding.rbac.authorization.k8s.io/flannel unchanged
serviceaccount/flannel unchanged
configmap/kube-flannel-cfg unchanged
daemonset.apps/kube-flannel-ds unchanged
root@haishu:/home/haishu# 
kubectl get pods -A

NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
kube-system            coredns-bccdc95cf-bfj8b                      1/1     Running   1          41h
kube-system            coredns-bccdc95cf-fb55d                      1/1     Running   1          41h
kube-system            etcd-haishu                                  1/1     Running   1          41h
kube-system            kube-apiserver-haishu                        1/1     Running   1          41h
kube-system            kube-controller-manager-haishu               1/1     Running   1          41h
kube-system            kube-flannel-ds-ww6vg                        1/1     Running   1          41h
kube-system            kube-proxy-ks874                             1/1     Running   1          41h
kube-system            kube-scheduler-haishu                        1/1     Running   1          41h
kubernetes-dashboard   dashboard-metrics-scraper-76679bc5b9-txn5p   1/1     Running   0          23h
kubernetes-dashboard   kubernetes-dashboard-5d46dbcdb7-cdpld        1/1     Running   0          23h

注意:上面是我原来已经拉取到的。没有拉去到需要执行下面指令

grep -i image kube-flannel.yml
docker pull quay.io/coreos/flannel:v0.11.0-amd64

K8S的界面设置dashboard

下载kubernetes-dashboard.yaml文件

wget http://mirror.faasx.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

修改文件kubernetes-dashboard.yaml文件中的kind: Service节点

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort      
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31001
  selector:
    k8s-app: kubernetes-dashboard
kubectl apply -f kubernetes-dashboard.yaml
kubectl get pod -n kubernetes-dashboard 

NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-7f5767668b-dd7ml   1/1     Running   0          28s
kubernetes-dashboard-57b4bcc994-vrzcp        1/1     Running   0          28s

查看yaml文件提供的pod均正常运行

kubectl get svc -n kubernetes-dashboard


NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.110.63.144   <none>        8000/TCP        86s
kubernetes-dashboard        NodePort    10.111.65.9     <none>        443:31001/TCP   87s

使用火狐浏览器访问https://192.168.120.160:31001/ 选择接受风险并继续

使用Token的方式登录

#创建一个dashboard的管理用户
kubectl create serviceaccount dashboard-admin -n kube-system
#将创建的dashboard用户绑定为管理用户
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
#获取刚刚创建的用户对应的token名称
kubectl get secrets -n kube-system | grep dashboard
#查看token的详细信息
kubectl describe secrets -n kube-system dashboard-admin-token-88gxw 

复制token信息在浏览器中选择token后输入登录

Logo

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

更多推荐