原地址参考github

一、环境准备(在全部设备上进行)

3 台 centos7.5 服务器,网络使用 Calico。

IP地址 节点角色 CPU 内存 Hostname
10.0.1.45 master 2c 4G k8s-master
10.0.1.20 node 2c 4G node1
10.0.1.18 node 2c 4G node2
  1. 设置主机名 hostname。
hostnamectl set-hostname k8s-master

对应上面表格的Hostname,node1与node2同理。

  1. 编辑3台设备的 host 文件,添加域名解析。
cat <<EOF >>/etc/hosts
10.0.1.45 k8s-master
10.0.1.20 node1
10.0.1.18 node2
EOF
  1. 关闭防火墙、selinux 和 swap
systemctl stop firewalld

systemctl disable firewalld

禁用SELINUX:

setenforce 0

vim /etc/selinux/config
SELINUX=disabled

关闭swap

swapoff -a

sed -i 's/.*swap.*/#&/' /etc/fstab
  1. 配置内核参数,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf <<EOF

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

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

net.ipv4.ip_forward = 1
EOF sysctl --system
  1. kube-proxy 开启 ipvs。

    由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块:
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4

创建 /etc/sysconfig/modules/ipvs.modules 文件,保证在节点重启后能自动加载所需模块。 使用 lsmod | grep -e ip_vs -e nf_conntrack_ipv4 命令查看是否已经正确加载所需的内核模块。

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  1. 安装docker

Kubernetes 1.15当前支持的 docker 版本列表是1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09。 这里在各节点安装 docker 的18.09.7版本。

yum install -y yum-utils   device-mapper-persistent-data   lvm2 &&\
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo &&\
yum install docker-ce-18.09.7-3.el7 -y
  1. 修改docker cgroup driver为systemd

根据文档CRI installation中的内容,对于使用 systemd 作为init system 的 Linux 的发行版,使用 systemd 作为docker 的 cgroup driver 可以确保服务器节点在资源紧张的情况更加稳定,因此这里修改各个节点上 docker 的 cgroup driver 为 systemd。

vim /etc/docker/daemon.json

{
"exec-opts": ["native.cgroupdriver=systemd"]
} #重启docker
systemctl restart docker #验证
docker info | grep Cgroup
Cgroup Driver: systemd
  1. 安装 Kubernetes 工具

配置国内 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

配置国内 Kubernetes 源

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

安装kubeadm、kubelet、kubectl

yum install -y kubeadm kubelet kubectl

systemctl enable kubelet

二、k8s-master 节点配置

1.使用 kubeadm 初始化 Kubernetes 集群

kubeadm init --kubernetes-version=1.15.0 \

--apiserver-advertise-address=10.0.1.45 \

--image-repository registry.aliyuncs.com/google_containers \

--pod-network-cidr=10.244.0.0/16

参数含义:

--apiserver-advertise-address=10.0.1.45
#定义api server地址就是master本机IP地址。 --image-repository registry.aliyuncs.com/google_containers
#由于kubeadm默认从官网k8s.grc.io下载镜像,以防网络原因,改为阿里云镜像仓库地址。 --pod-network-cidr=10.244.0.0/16
#定义POD网段为: 10.244.0.0/16。

集群初始化成功后返回如下信息:

join 10.0.1.45:6443 --token bybzi7.7201j7f7mtiwtmg4 \

--discovery-token-ca-cert-hash sha256:9186c9b0709af151079bcb034f1771f10f382341bfb45024e5d0c541a055f2eb
  1. 配置 kubectl 工具
mkdir -p ~/.kube

cp /etc/kubernetes/admin.conf ~/.kube/config

#查看集群状态,确认所有组件都处于healthy状态
kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}

集群初始化如果遇到问题,可以使用下面的命令进行清理(慎用):

kubeadm reset
  1. 安装 Calico v3.8 网络服务
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml

#由于默认的 calico.yaml 的 Pod 网段为192.168.0.0/16,打开 calico.yaml 文件找到这行改为10.244.0.0/16。
vim calico.yaml - name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16" kubectl apply -f ./calico.yaml #查看创建情况,等待每个 pod 的 STATUS 变为 Running。
watch kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-6ff88bf6d4-tgtzb 1/1 Running 0 2m45s
kube-system calico-node-24h85 1/1 Running 0 2m43s
kube-system coredns-846jhw23g9-9af73 1/1 Running 0 4m5s
kube-system coredns-846jhw23g9-hmswk 1/1 Running 0 4m5s
kube-system etcd-jbaker-1 1/1 Running 0 6m22s
kube-system kube-apiserver-jbaker-1 1/1 Running 0 6m12s
kube-system kube-controller-manager-jbaker-1 1/1 Running 0 6m16s
kube-system kube-proxy-8fzp2 1/1 Running 0 5m16s
kube-system kube-scheduler-jbaker-1 1/1 Running 0 5m41s

4 设置环境变量

cat   > ~/.bash_profile << EOF
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF

三、node 节点配置(在所有node节点上操作)

添加 node 节点,执行如下命令,使所有 node 节点加入 Kubernetes 集群。

kubeadm join 10.0.1.45:6443 --token bybzi7.7201j7f7mtiwtmg4    \
--discovery-token-ca-cert-hash sha256:9186c9b0709af151079bcb034f1771f10f382341bfb45024e5d0c541a055f2eb

成功后,在 k8s-master 中输入命令检查集群状态。

kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 36m v1.15.0
node1 Ready <none> 3m10h v1.15.0
node2 Ready <none> 3m v1.15.0

四、部署 Dashboard(在k8s-master上进行操作)

  1. 下载 Dashboard 的 yaml 文件。
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

#修改 yaml 文件中使用的源镜像。
sed -i 's/k8s.gcr.io/loveone/g' kubernetes-dashboard.yaml
#使用 NodePort 模式映射 30001 至 k8s 所有宿主机的 30001 端口上。
sed -i '/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' kubernetes-dashboard.yaml
  1. 部署 Dashboard。
kubectl apply -f kubernetes-dashboard.yaml
  1. 创建完成后,检查相关服务运行状态。
kubectl get deployment kubernetes-dashboard -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-dashboard 1/1 1 1 3m kubectl get services -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 40m
kubernetes-dashboard NodePort 10.99.190.175 <none> 443:30001/TCP 4m
  1. 在 Firefox 浏览器输入 Dashboard 访问地址: https://10.0.1.45:30001

    注: 由于 Dashborad 的认证原因,谷歌浏览器和 IE 可能无法打开,请使用 Firefox 浏览器。

  2. 查看访问 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}')
  1. 使用输出的 token 登录 Dashboard。

五 创建

1 使用命令创建pod

[root@k8s-master mainfests]# kubectl run nginx-deploy --image=nginx:1.14 --port=80 --replicas=3

[root@k8s-master mainfests]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-bc9ff65dd-6kvfg 1/1 Running 0 16h
nginx-deploy-bc9ff65dd-ffcl5 1/1 Running 0 16h
nginx-deploy-bc9ff65dd-pvjzt 1/1 Running 0 17h

2 使用yaml创建pod

[root@k8s-master mainfests]# cat pod-demo.yml
apiVersion: v1
kind: Pod
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: myapp
image: nginx:1.14
- name: busybox
image: busybox:latest
command:
- "bin/sh"
- "-c"
- "sleep 3600" [root@k8s-master mainfests]# kubectl create -f pod-demo.yml
创建一个serviceaccount,使其token只能进入default空间

kubectl create   serviceaccount def-ns-admin  -n  default
kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin 将token转换为config文件 ADMIN_TOKON=$(kubectl get secret `kubectl get secret | awk '/^dashboard-admin-01/{print $1}'` -o jsonpath={.data.token} | base64 -d)
kubectl config set-credentials default --token=$ADMIN_TOKON --kubeconfig=/root/admin-test.conf
kubectl config set-context default@kubernetes --cluster=kubernetes --user=def-ns-admin --kubeconfig=/root/admin-test.conf
kubectl config use-context default@kubernetes --kubeconfig=/root/admin-test.conf

kubeadm安装Kubernetes 1.15 实践的更多相关文章

  1. 使用kubeadm 安装 kubernetes 1.15.1

    简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...

  2. 在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践

    前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernetes由于"scientifically上网"问题举步维艰,本文以实战经 ...

  3. Centos 使用kubeadm安装Kubernetes 1.15.3

    本来没打算搞这个文章的,第一里面有瑕疵(没搞定的地方),第二在我的Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装 也有安装,第三 和社区的问文章比较雷同 https:// ...

  4. 使用kubeadm安装Kubernetes 1.15.3 并开启 ipvs

    一.安装前准备 机器列表 主机名 IP node-1(master) 1.1.1.101 node-2(node) 1.1.1.102 node-3(node) 1.1.1.103 设置时区 cp / ...

  5. Kubeadm安装Kubernetes 1.15.1

    一.实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.198.200 >=2c >=2G master 192.168.198.201 >=2c ...

  6. 使用kubeadm安装kubernetes 1.15

    1.主机准备篇 使用vmware Workstation 10创建一台虚拟机,配置为2C/2G/50G,操作系统为CentOS Linux release 7.6.1810 (Core). IP地址为 ...

  7. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  8. 使用 kubeadm 安装 kubernetes v1.16.0

    近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系           统:CentOS Linux release 7.6 Docke ...

  9. kubeadm安装kubernetes V1.11.1 集群

    之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...

随机推荐

  1. sql2000行转列 转过来的测试完也不知那个网站去哪了 没法写出处了

    ALTER procedure dbo.CommonRowToCol ) as begin --必须包含colname列和result列(不区分大小写), --除colname列和result列 其余 ...

  2. scrapy的使用--Rcrapy-Redis

    Scrapy-Redis分布式爬虫组件 Scrapy是一个框架,他本身是不支持分布式的.如果我们想要做分布式的爬虫.就需要借助一个组件叫做Scrapy-Redis.这个组件正式利用了Redis可以分布 ...

  3. C++数据类型之实型(浮点型)&科学计数法

    实型(浮点型) **作用**:用于==表示小数== 浮点型变量分为两种: 1. 单精度float 2. 双精度double 两者的**区别**在于表示的有效数字范围不同. float类型数据,需在数据 ...

  4. css 内容溢出显示垂直滚动条,内容不超出就不显示滚动条

    搬运自:https://www.cnblogs.com/wangyuanyuanlovexuanxuan/p/7767767.html html: <style> .div1{ width ...

  5. 一个好的mvc5+ef6的学习地址

    链接地址: MVC5 + EF6 入门完整教程  感谢这位博主的无私奉献 文章目录列表:http://www.cnblogs.com/miro/p/3777960.html#3673688

  6. PHP算法之统计全为 1 的正方形子矩阵

    在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0 输出: 4 来源:力扣( ...

  7. oxyplot 禁止拖动,缩放

      <oxy:Plot> IsZoomEnabled= IsPanEnabled=/> IsZoomEnabled= IsPanEnabled=/> 关键代码: IsZoomE ...

  8. Storm 测试

    本文将学习如何使用java创建Storm拓扑 Storm集群的组件 Storm集群类似于Hadoop集群,只不过 Hadoop 上运行"MapReduce jobs", Storm ...

  9. 《DSP using MATLAB》Problem 8.41

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  10. 第三方模块requests下载

    requests下载 英文网站 http://docs.python-requests.org/en/master/ 中文网站 http://docs.python-requests.org/zh_C ...