壹、基础环境

kubeadm是Kubernetes官方提供的高效安装和开头化Kubernetes集群的工具,近来的还处于孵化开拓情状,伴随Kubernetes每个版本的揭橥都会联手更新。
当然,近年来的kubeadm是不能够用来生产环境的。
但伴随着Kubernetes每便版本晋级,kubeadm都会对集群配置方面包车型大巴1些实施做调节,通过试验kubeadm大家能够学习到Kubernetes官方在集群配置上某个新的极品奉行。

概述

本篇文章重要介绍在CentOS7.3体系上利用Kubeadm安装kubernetes壹.柒.5。安装进程中,会通过Ali云的yum镜像和docker镜像站点访问种种被墙的财富。

来自:

云主机

澳门金沙国际 1

Kubernetes
1.8已经表露,为了跟上合法更新的台本,接下去感受一下Kubernetes
一.第88中学的kubeadm。

一. 基础环境

除开下述音讯,最佳有一台能够访问google能源的云主机可能代理。此教程使用root帐户实行安装操作。
长机音信

k8s-master    10.23.118.35     2core,2G,20G    CentOS Linux release 7.3.1611 (Core)
k8s-node01    10.23.118.36    2core,2G,20G    CentOS Linux release 7.3.1611 (Core)
k8s-node02    10.23.118.37    2core,2G,20G    CentOS Linux release 7.3.1611 (Core)

Hostname设置

hostnamectl --static set-hostname k8s-master
hostnamectl --static set-hostname k8s-node01
hostnamectl --static set-hostname k8s-node02

写入/etc/hosts

cat >> /etc/hosts << EOF
10.23.118.35 k8s-master
10.23.118.36 k8s-node01
10.23.118.37 k8s-node02
EOF

关门防火墙与SELINUX

systemctl disable firewalld.service
systemctl stop firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

澳门金沙国际 2

下载软件包

将具备软件下载至/data目录

# 链接:https://pan.baidu.com/s/13DlR1akNBCjib5VFaIjGTQ 密码:1l69
# 链接:https://pan.baidu.com/s/1V6Uuj6a08mEq-mRLaI1xgw 密码:6gap

1.准备

贰. Kubernetes安装与安排

三台主机都要举办以下操作。
Docker安装

yum install docker -y
systemctl enable docker   && systemctl start docker

安装实现后运营“docker version”检查下,版本应该是“壹.1贰.陆”。
kubernetes 阿里云yum源

cat >> /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

翻看当前相继零部件的版本

yum list kubeadm --showduplicates
yum list kubernetes-cni --showduplicates
yum list kubelet --showduplicates
yum list kubectl --showduplicates

image.png

master到node做免密认证

ssh-keygen
ssh-copy-id root@192.168.1.237
ssh-copy-id root@192.168.1.100
ssh-copy-id root@192.168.1.188

1.一连串铺排

安装

yum install kubeadm-1.7.5-0.x86_64

设置kubeadm时,会自动将Kubernetes的别的组件安装到位,对应版本如下
kubeadm 1.7.5-0, kubectl 1.7.5-0, kubelet 1.7.5-0, kubernetes-cni 0.5.1-0

kubelet配置
基本功pause镜像设置

cat > /etc/systemd/system/kubelet.service.d/20-pod-infra-image.conf  << EOF
[Service]
Environment="KUBELET_EXTRA_ARGS=--pod-infra-container-image=registry.cn-qingdao.aliyuncs.com/haitao/pause-amd64:3.0"
EOF

设置docker 一.1二.陆及版本必要设置cgroup-driver=cgroupfs
sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
说明:https://github.com/kubernetes/kubernetes/issues/43805那边有表达
开头服务
systemctl enable kubelet && systemctl start kubelet

Kubernetes Docker镜像下载
经过此网站查看信赖镜像的版本号:https://kubernetes.io/docs/admin/kubeadm/
因为google的资源国内不能访问,已将Kubernetes安装进程中所需要的镜像上传至Ali云

registry.cn-qingdao.aliyuncs.com/haitao/etcd-amd64
registry.cn-qingdao.aliyuncs.com/haitao/kube-apiserver-amd64
registry.cn-qingdao.aliyuncs.com/haitao/kube-controller-manager-amd64
registry.cn-qingdao.aliyuncs.com/haitao/kube-proxy-amd64
registry.cn-qingdao.aliyuncs.com/haitao/kube-scheduler-amd64
registry.cn-qingdao.aliyuncs.com/haitao/pause-amd64
registry.cn-qingdao.aliyuncs.com/haitao/k8s-dns-sidecar-amd64
registry.cn-qingdao.aliyuncs.com/haitao/k8s-dns-kube-dns-amd64
registry.cn-qingdao.aliyuncs.com/haitao/k8s-dns-dnsmasq-nanny-amd64

下载和上传镜像脚步** **[请在能够访问google财富的主机上运营]

#!/bin/bash
KUBE_VERSION=v1.7.5
KUBE_PAUSE_VERSION=3.0
ETCD_VERSION=3.0.17
DNS_VERSION=1.14.4
GCR_URL=gcr.io/google_containers
ALIYUN_URL=registry.cn-qingdao.aliyuncs.com/haitao
images=(kube-proxy-amd64:${KUBE_VERSION}
kube-scheduler-amd64:${KUBE_VERSION}
kube-controller-manager-amd64:${KUBE_VERSION}
kube-apiserver-amd64:${KUBE_VERSION}
pause-amd64:${KUBE_PAUSE_VERSION}
etcd-amd64:${ETCD_VERSION}
k8s-dns-sidecar-amd64:${DNS_VERSION}
k8s-dns-kube-dns-amd64:${DNS_VERSION}
k8s-dns-dnsmasq-nanny-amd64:${DNS_VERSION})
for imageName in ${images[@]} ; do
    docker pull $GCR_URL/$imageName
    docker tag $GCR_URL/$imageName $ALIYUN_URL/$imageName
    docker push $ALIYUN_URL/$imageName
    docker rmi $ALIYUN_URL/$imageName
done

乘势容器本领提高,Kubernetes慢慢高人一头,此番分享跟大家调换Kubernetes使用集群联邦完结多集群管理的相关主题素材,以及大家实践中怎样在Kubernetes使用集群联邦进行多集群众管理理。

设定主机名与host文件

# 分别设定node与master的主机名
hostnamectl set-hostname master
exec bash

# 同步所有主机的hosts文件
vim /etc/hosts
192.168.1.78 master localhost
192.168.1.237 node1
192.168.1.100 node2
192.168.1.188 node3

在设置在此之前,供给先做如下准备。两台CentOS 七.叁主机如下:

三. 开立集群

先是在主机“k8s-master”上实践init操作。
api-advertise-addresses为“k八s-master”
ip,pod-network-cidr钦定IP段须求和kube-flannel.yml文件中布局的一样(kube-flannel.yaml在上面flannel的安装中会用到)

export KUBE_REPO_PREFIX="registry.cn-qingdao.aliyuncs.com/haitao"
export KUBE_ETCD_IMAGE="registry.cn-qingdao.aliyuncs.com/haitao/etcd-amd64:3.0.17"
kubeadm init --apiserver-advertise-address=10.23.118.35 --kubernetes-version=v1.7.5 --pod-network-cidr=10.244.0.0/16

假若一切顺遂, 能够直达如下提示:

Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run (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:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token c071b2.d57d76cd7d69a79d 10.23.118.35:6443

kubectl的kubeconfig配置

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

flannel安装

wget https://raw.githubusercontent.com/coreos/flannel/v0.9.0/Documentation/kube-flannel.yml
sed -i 's/quay.io\/coreos\/flannel:v0.9.0-amd64/registry.cn-qingdao.aliyuncs.com\/haitao\/flannel:v0.9.0-amd64/g' ./kube-flannel.yml
kubectl apply -f ./kube-flannel.yml

master节点安装验证

kubectl get cs
NAME                STATUS    MESSAGE              ERROR
controller-manager  Healthy  ok
scheduler            Healthy  ok
etcd-0              Healthy  {"health": "true"}
  • 一、 Kubernetes集群联邦介绍
  • 2、 Kubernetes使用集群联邦完毕多集群众管理理

解决DNS解析localhost

此云主机的DNS解析localhost会解析到三个鬼地址,那是个大坑。kubeadm初始化是会用到localhost。假使您的主机能分析到温馨的IP,那么那步能够跳过。若是不可能则要求自身搭建一个DNS,将localhost解析到祥和。

# 1.检测
[root@node2 ~]# nslookup localhost
Server:     118.118.118.9
Address:    118.118.118.9#53

Non-authoritative answer:
Name:   localhost.openstacklocal
Address: 183.136.168.91

# 2.搭建DNS
yum -y install dnsmasq
cp /etc/resolv.conf{,.bak}
rm -rf /etc/resolv.conf
echo -e "nameserver 127.0.0.1\nnameserver $(hostname -i)" >> /etc/resolv.conf
chmod 444 /etc/resolv.conf
chattr +i /etc/resolv.conf
echo -e "server=8.8.8.8\nserver=8.8.4.4" > /etc/dnsmasq.conf
echo -e "$(hostname -i)\tlocalhost.$(hostname -d)" >> /etc/hosts
service dnsmasq restart

# 3.再次检测
[root@master ~]# nslookup localhost
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   localhost
Address: 192.168.1.78

# 4.添加域名解析
vim /etc/dnsmasq.conf
address=/www.baidu.com/123.123.123.123

cat/etc/hosts192.168.61.11node1192.168.61.12node2

node节点安装和到场集群

进行如下指令:

export KUBE_REPO_PREFIX="registry.cn-qingdao.aliyuncs.com/haitao"
export KUBE_ETCD_IMAGE="registry.cn-qingdao.aliyuncs.com/haitao/etcd-amd64:3.0.17"
kubeadm join --token c071b2.d57d76cd7d69a79d 10.23.118.35:6443

node节点安装验证

kubectl get nodes
NAME        STATUS    AGE      VERSION
k8s-master  Ready    1d        v1.7.5
k8s-node01  Ready    1d        v1.7.5
k8s-node02  Ready    1d        v1.7.5

Kubernetes在1.3本子之后,扩展了“集群联邦”Federation的法力。那么些作用使公司能够高效有效的、低本钱的跨区跨域、甚至在分歧的云平台上运维集群。那一个效果能够分部理地方创造一个复制机制,将多个kubernetes集群实行复制,就算遇见有个别区域接二连三中断或某个数据基本故障,也会保持最重点的劳动运转。在一.7版之后帮助本地多个集群联邦管理,不要求选取信赖云平台。

一齐系统时间

ntpdate 0.centos.pool.ntp.org

假如各个主机启用了防火墙,须求开放Kubernetes各种零部件所须求的端口,能够查阅Installing
kubeadm中的”Check
required ports”一节。 那里大致起见在各节点禁用防火墙:

4. 参考

使用kubeadm安装kubernetes1.7
http://blog.csdn.net/zhuchuangang/article/details/76572157

一、Kubernetes集群联邦介绍

关闭防火墙

iptables -F
systemctl stop firewalld
systemctl disable firewalld

systemctl stop firewalld

一、管理多個kubernetes集群

“集群联邦”在架设上同kubernetes集群很相似。有3个“集群联邦”的API
server提供贰个标准的Kubernetes
API,并且经过etcd来存款和储蓄状态。区别的是,3个一般的Kubernetes只是治本节点计算,而“集群联邦”管理全数的kubernetes集群。

澳门金沙国际 3

K8s集群

关闭SELinux & 关闭swap

swapoff -a 
sed -i 's/.*swap.*/#&/' /etc/fstab
setenforce 0

systemctl disable firewalld

2、跨集群服务意识

Kubernetes有贰个正式的插件:kube-dns,这么些插件能够在集群内部提供DNS服务,通过DNS解析service名字来做客kubernetes服务。Kubernetes服务是由1组kubernetesPOD组成的,那个POD是局地早已容器化了的选拔,这个POD前边使用到了负荷均衡器。即便大家有一个kubernetes集群,那几个集群裡面有三个劳务叫做mysql,那个服务是由一组mysql
POD组成的。在这些kubernetes集群中,其余应用能够因而DNS来拜访那一个mysql服务。
集群联邦federation/v一beta1API扩充基于DNS服务意识的效率。利用DNS,让POD能够跨集群、透明的剖析服务。

澳门金沙国际 4

集群发现

确定时区

timedatectl set-timezone Asia/Shanghai 
systemctl restart chronyd.service 

始建/etc/sysctl.d/k8s.conf文件,增加如下内容:

三、跨集群调度

为了追求高可用性和更加高的属性,集群联邦能够把不一样POD钦赐给不一致的Kubernetes集群中。集群联邦调度器将调控哪些在分歧kubernetes集群中分红工作负荷。

透过跨集群调度,我们得以:

  • 跨kubernetes集群均匀的调度任务载荷
  • 将顺序kubernetes集群的工作负荷进行最大化,若是当前kubernetes集群超过了承受技巧,那麽将附加的行事负载路由到另二个相比较空闲的kubernetes集群中
  • 基于使用地理区域须求,调度工作负荷到不一样的kubernetes集群中,对于不一样的终极用户,提供更加高的带宽和更低的延迟。

修改系统参数

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

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

4、集群高可用,故障自动员搬迁移

集群联邦能够跨集群冗馀铺排,当有个别集群所在区域出现故障时,并不影响整个服务。集群联邦还能检验集群是还是不是为不可用状态,假设发现有个别集群为不可用状态时,能够将战败的天职重新分配给集群联邦中别的可用状态的集群上。

安装docker

tar -xvf docker-packages.tar
cd docker-packages
yum -y install local *.rpm
systemctl start docker && systemctl enable docker

实行sysctl -p /etc/sysctl.d/k捌s.conf使修改生效。

2、Kubernetes使用集群联邦实现多集群众管理理

陈设镜像加快器

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://lw9sjwma.mirror.aliyuncs.com"]
}

systemctl daemon-reload 
systemctl restart docker

禁用SELINUX:

一、系统环境及早先化

配置k8s的yum源

vim /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0

setenforce0

1.一 系统环境

澳门金沙国际 5

系统环境

获取kube软件包

cd kube-packages-1.10.1                 # 软件包在网盘中下载    
tar -xvf kube-packages-1.10.1.tar
cd kube-packages-1.10.1
yum -y install local *.rpm 
systemctl start kubelet && systemctl enable kubelet

vi/etc/selinux/config

1.二 安装前准备

统一k8s与docker的驱动

# 1.查看docker驱动
 docker info | Cgroup Driver
Cgroup Driver: cgroupfs

# 修改k8s配置文件与docker保持一致
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

SELINUX=disabled

壹.贰.一 准备kubernetes组件镜像

Kubernetes一.柒版本的集群与联邦集群效应的安装格局均为镜像安装,全数组件功效都应用官方提供的镜像来落实,由于官方镜像国内不可能平常下载,须求提前准备好镜像或不易上网。
切实镜像列表如下:

澳门金沙国际 6

镜像列表

导入基础镜像

cd /data
docker load -i k8s-images-1.10.tar.gz 

Kubernetes
壹.八起初须要关闭系统的Swap,倘诺不闭馆,默许配置下kubelet将不可能运维。能够通过kubelet的开发银行参数–fail-swap-on=false更换那几个限制。
大家那边境海关闭系统的Swap:

1.2.2 安装Docker 1.12

Kubernetes 一.柒还未曾对准docker
一.一3上做测试和验证,所以那里安装Kubernetes官方推荐的Docker 壹.1二本子。

二、初始化master节点

# 初始化master 指定的版本要与kubeadm版本一致
# kubeadm只给定了最少选项,集群名称等等都没有指定,kubeadm init
[root@master ~]# kubeadm init --kubernetes-version=v1.10.1 --pod-network-cidr=10.244.0.0/16

# 初始化完成后得到如下信息

Your Kubernetes master 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/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join 192.168.1.78:6443 --token qabol0.c2gq0uyfxvpqr8bu --discovery-token-ca-cert-hash sha256:2237ec7b8efd5a8f68adcb04900a0b17b9df2a78675a7d62b4aef644a7f62c05
# kubeadm join 是node节点加入集群的命令,注意token的有效期

swapoff-a

一.贰.三 修改系统布置

始建/etc/sysctl.d/k八s.conf文件,增多如下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
实施sysctl -p /etc/sysctl.d/k八s.conf使修改生效。

即使现在要经过此外普通用户运维k八s,那么切换用户后实践,不然root下直接实施

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

修改 /etc/fstab 文件,注释掉 SWAP 的机动挂载,使用free
-m确认swap已经破产。

1.2.4 安装Kuberadm与Kubelet

留神:该yum源供给科学技能健康安装
在每一种节点安装kubeadm和kubelet,首先是增添kubernetes的YUM源:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

#安装kubeadm, kubelet, kubectl, kubernets-cni
yum install -y kubelet kubeadm kubectl kubernetes-cni

#kubelet服务设置开机启动
systemctl enable kubelet.service

上述安装完毕后,起先化环境的准备就成功了。

核心命令

# 查看pods
kubectl get pods


# 查看系统pods 
[root@master ~]# kubectl get pods -n kube-system
NAME                             READY     STATUS     RESTARTS   AGE
etcd-master                      0/1       Pending    0          1s
kube-apiserver-master            0/1       Pending    0          1s
kube-controller-manager-master   0/1       Pending    0          1s
kube-dns-86f4d74b45-d42zm        0/3       Pending    0          8h
kube-proxy-884h6                 1/1       NodeLost   0          8h
kube-scheduler-master            0/1       Pending    0          1s

# 查看集群各组件状态信息
[root@master ~]# kubectl get componentstatuses
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok                   
controller-manager   Healthy   ok                   
etcd-0               Healthy   {"health": "true"}   
You have new mail in /var/spool/mail/root

swappiness参数调节,修改/etc/sysctl.d/k八s.conf增多底下壹行:

2、安装kubernetes集群

先是在三个节点上设置kubernetes作为master节点,将master节点参与集群调度.然后在该节点上安装联邦集群效应,作为联邦集群的决定平面。

3、node加入集群

# 确保node节点cgroup驱动保持一致
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

# 命令来自集群初始化之后额显示中
kubeadm join 192.168.1.78:6443 --token v0866r.u7kvg5js1ah2u1bi --discovery-token-ca-cert-hash sha256:7b36794f4fa5121f6a5e309d0e312ded72997a88236a93ec7da3520e5aaccf0e

# master节点查看nodes信息
[root@master data]# kubectl get nodes
NAME      STATUS     ROLES     AGE       VERSION
master    NotReady      master    57m       v1.10.1
node1     NotReady      <none>    27m       v1.10.1
node2     NotReady      <none>    11s       v1.10.1
node3     NotReady   <none>    4s        v1.10.1
You have new mail in /var/spool/mail/root

vm.swappiness=0

贰.1 早先化集群

利用kubeadm初阶化集群,选择node一作为Master

在node一上施行上边包车型地铁指令:
注:因为大家挑选flannel作为Pod网络插件,所以命令钦命–pod-network-cidr=十.240.0.0/1陆

kubeadm init --kubernetes-version=v1.7.0 --pod-network-cidr=10.240.0.0/16 --apiserver-advertise-address=192.168.5.13

请保存好kubeadm join 的新闻,后续节点插手集群须要动用该命令.

为了利用kubectl访问apiserver,在~/.bash_profile中加进下边包车型地铁环境变量:

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

那会儿kubectl命令在master
node上就能够用了,查看一下当下机械中的Node,看到node0状态为Ready:

kubectl get nodes
  NAME      STATUS     AGE       VERSION
  node0     Ready     3m         v1.7.0

4、安顿网络

举行sysctl -p /etc/sysctl.d/k8s.conf使修改生效。

二.二 安装Pod互连网组件

接下去安装flannel network add-on,首先下载必要的yaml文件:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml 
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

日前急需在kube-flannel.yml中应用–iface参数内定集群主机内网网卡的名号,不然恐怕会并发dns不可能解析。须要将kube-flannel.yml下载到本地,flanneld运营参数加上–iface=<iface-name>

vi kube-flannel.yml

   command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr", "--iface=eth1" ]   //--iface=eth1

改为本机网卡名称

布署网络组件:

kubectl create -f kube-flannel-rbac.yml
kubectl apply -f kube-flannel.yml

管教全体的Pod都地处Running状态。

kubectl get pod --all-namespaces -o wide

如下图:

澳门金沙国际 7

Pod状态

运用上面的一声令下使Master Node参与工作负荷:

kubectl taint nodes --all  node-role.kubernetes.io/master-

部署

flannel官网
flannel下载时不用正确上网,flannel的yml文件会活动去quay.io网址中下载镜像。

# 1.1使用软件包中的flannel,并指pod映射到哪个主机的网卡上面。
vim kube-flannel.yml
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr","-iface=eth0" ]
# 以下要按顺序创建,先创建rbac,之前没有穿件rbac导致pod正常创建,但是pin不同
kubectl apply -f kube-flannel-rbac.yml
kubectl apply -f kube-flannel.yml
# 后,节点的状态会变为ready
[root@master1 kubernetes1.10]# kubectl get node
NAME      STATUS    ROLES     AGE       VERSION
master    Ready      master    57m       v1.10.1
node1     Ready      <none>    27m       v1.10.1
node2     Ready      <none>    11s       v1.10.1
node3     Ready   <none>    4s        v1.10.1

# 2.从官网下载最新的flannel,k8s1.7+ 直接执行以下命令即可
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

1.2安装Docker

三、安装联邦集群组件

flannel配置文件修改

kube-flannel.yml中指定使用的网段
"Network": "10.244.0.0/16"

默认使用16位掩码,则在各node中都分配一个10.244.0.0/8的网络

yum install-y yum-utils device-mapper-persistent-data lvm2

叁.壹装置前布署修改

修改etcd与apiserver的监听端口,修改前先结束kubelet服务

vi /etc/kubernetes/manifests/etcd.yaml
   - --listen-client-urls=http://0.0.0.0:2379
   - --advertise-client-urls=http://0.0.0.0:2379

vi /etc/kubernetes/manifests/kube-apiserver.yaml
   - --insecure-port=8080
   - --insecure-bind-address=0.0.0.0

重启kubelet服务让etcd与apiserver监听端口生效

systemctl restart kubelet

Kubernetes使用集群联邦实现多集群众管理理,云主机搭建Kubernetes。五、部署dashboard

kubectl apply -f kubernetes-dashboard-http.yam
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml

yum-config-manager \–add-repo \

三.二设置helm工具计划Coredns

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh

chmod 700 get_helm.sh

./get_helm.sh

修改RBAC近来造访权限(那是相比较关键的地点,未有那步后边会退步)

kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

开创coredns键值文件

cat <<EOF > /opt/Values.yaml
isClusterService: false
serviceType: "NodePort"
middleware:
  kubernetes:
    enabled: false
  etcd:
    enabled: true
    zones:
    - "example.com."
    endpoint: "http://192.168.5.13:2379"
EOF

新建coredns配置文件

vi /root/coredns-provider.conf
[Global]
etcd-endpoints = http://192.168.0.51:2379
zones = example.com.

命令行常用命令

# 查看pod信息,默认显示default名称空间下的pod
[root@master ~]# kubectl get pods
No resources found.

# 指定名称空间写pod
[root@master ~]# kubectl get pods -n kube-system
NAME                                    READY     STATUS    RESTARTS   AGE
etcd-master                             1/1       Running   0          3h
kube-apiserver-master                   1/1       Running   0          3h
kube-controller-manager-master          1/1       Running   0          3h
kube-dns-86f4d74b45-bzbvc               3/3       Running   0          3h
kube-flannel-ds-5ghhj                   1/1       Running   0          2h
kube-flannel-ds-ht4xd                   1/1       Running   0          3h
kube-flannel-ds-kbm5g                   1/1       Running   0          3h
kube-flannel-ds-mlj4r                   1/1       Running   0          2h
kube-proxy-9xxnd                        1/1       Running   0          3h
kube-proxy-n9w5x                        1/1       Running   0          3h
kube-proxy-nkn8c                        1/1       Running   0          2h
kube-proxy-shd6l                        1/1       Running   0          2h
kube-scheduler-master                   1/1       Running   0          3h
kubernetes-dashboard-5c469b58b8-rjfx6   1/1       Running   0          1h


# 显示更详细的pod信息,此时各pod中都运行了一个kube-proxy和flannel容器
-o wide 显示更详细的信息,报错node节点iP、主机名
[root@master ~]# kubectl get pods -n kube-system -o wide
NAME                                    READY     STATUS    RESTARTS   AGE       IP              NODE
etcd-master                             1/1       Running   0          3h        192.168.1.78    master
kube-apiserver-master                   1/1       Running   0          3h        192.168.1.78    master
kube-controller-manager-master          1/1       Running   0          3h        192.168.1.78    master
kube-dns-86f4d74b45-bzbvc               3/3       Running   0          3h        10.244.0.2      master
kube-flannel-ds-5ghhj                   1/1       Running   0          2h        192.168.1.188   node3
kube-flannel-ds-ht4xd                   1/1       Running   0          3h        192.168.1.78    master
kube-flannel-ds-kbm5g                   1/1       Running   0          3h        192.168.1.237   node1
kube-flannel-ds-mlj4r                   1/1       Running   0          2h        192.168.1.100   node2
kube-proxy-9xxnd                        1/1       Running   0          3h        192.168.1.237   node1
kube-proxy-n9w5x                        1/1       Running   0          3h        192.168.1.78    master
kube-proxy-nkn8c                        1/1       Running   0          2h        192.168.1.100   node2
kube-proxy-shd6l                        1/1       Running   0          2h        192.168.1.188   node3
kube-scheduler-master                   1/1       Running   0          3h        192.168.1.78    master
kubernetes-dashboard-5c469b58b8-rjfx6   1/1       Running   0          1h        10.244.0.3      master

3.3添加kubernetes从节点

在kubernetes工作节点上上马安装后进行以下命令,就能够进入集群

kubeadm join --token e7986d.e440de5882342711 192.168.5.13:6443

在master节点查看节点状态,增多之后能够在master上施行这么些查看是还是不是丰硕成功

kubectl get nodes

再一次上述手续创建多个kubernetes集群,为联邦集群加多集群节点做准备。

陆、kubeadm清空配置

# 清空kubectl
kubeadm reset

# 清空网络信息
ip link del cni0
ip link del flannel.1

翻开当前的Docker版本:

三.四开头化联邦集群

施行那么些举办联邦的初步化,在调节平面包车型大巴master节点上施行:

kubefed init fellowship \
    --host-cluster-context=kubernetes-admin@kubernetes \
    --dns-provider="coredns" \
    --dns-zone-name="example.com." \
    --dns-provider-config="/root/coredns-provider.conf" \
    --apiserver-enable-basic-auth=true \
    --apiserver-enable-token-auth=true \
    --apiserver-arg-overrides="--anonymous-auth=false,--v=4" \
    --api-server-service-type="NodePort" \
    --api-server-advertise-address="192.168.5.13" \
--etcd-persistent-storage=false

起头化达成后集群联邦会在federation-system命名空间中开创八个POD

澳门金沙国际 8

集群中的pod

7、踩过的这一个坑

  • 担保master与node的DNS解析localhost能分析到祥和的IP
  • node加入master确保token不过期
  • node确定保证kubelet寻常运营并运维
  • flannel互联网要先创立kube-flannel-rbac.ymal再次创下造 kube-flannel.yml

yum list docker-ce.x86_64–showduplicates|sort-r

三.5任何kubernetes集群插足联邦集群

选料集群的context

kubectl config use-context fellowship   //fellowship为联邦初始化时创建的名称

增添联邦集群众文化艺术件

集群1
cat /home/tmp/c1.yaml 
   apiVersion: federation/v1beta1
   kind: Cluster
   metadata:
 name: c1
   spec:
 serverAddressByClientCIDRs:
 - clientCIDR: 0.0.0.0/0
   serverAddress: http://192.168.15.53:8080

集群2
   cat /home/tmp/c2.yaml 
   apiVersion: federation/v1beta1
   kind: Cluster
   metadata:
 name: c2
   spec:
serverAddressByClientCIDRs:
- clientCIDR: 0.0.0.0/0
  serverAddress: http://192.168.8.12:8080

实行添加那一个集群到联邦

kubectl create -f c1.yaml
kubectl create -f c2.yaml

翻看联邦集群状态,状态为Ready正是成功了。

[root@test01 ~]# kubectl get cluster
NAME      STATUS     AGE
c1        Ready      2d
c2        Ready      2d

8、token过期的消除办法

# 1.查看已经存在的token
kubeadm token list

# 2.创建token
kubeadm token create

# 3.查看ca证书的sha256编码
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

# 4.node使用新的token加入集群
kubeadm join --token acb123 --discovery-token-ca-cert-hash sha256:efg456  172.16.6.79:6443 --skip-preflight-checks
    # abc123    新创建的Token
    # efg456    证书的sha256编码
    # IP+Port   Master的IP+Port

docker-ce.x86_6417.09.0.ce-1.el7.centosdocker-ce-stable

三.陆由此联邦集群计划应用

透过联邦集群布署应用,供给在阿拉伯联合共合国酋集群调整平面包车型大巴节点上,切换来联邦的context

kubectl config use-context fellowship   //fellowship为联邦初始化时创建的名称

配备使用在遍布在二个集群中:

# vi tomcat.yaml
apiVersion: exensions/v1beta1
kind: ReplicaSet
metadata:
  name: tomcat
  lables:
    app: tomcat
  annotaions:
    federation.kubernetes.io/replica-set-preferences:
        {
       "rebalance": true,
       "clusters": {
          "c1": {
      "weight": 1
   },
          "c2": {
      "weight": 1
   }
    }
}
spec:
  replicas: 4
  template:
    metadata:
      labels:
        #region: tomcat
app: tomcat
    spec:
      containers:
        - name: fed-tomcat
  image: 192.168.18.250:5002/admin/tomcat:v0.0.5
  resourcces:
    requests:
      cpu: 200M
      memory: 500Mi
  ports:
  - containerPort: 80

经过上述编排创制应用在联邦,应用的伍个实例按比例分布到一个集群中

澳门金沙国际 9

集群

当前集群联邦只帮忙以下几连串型财富的创建:

  • Cluster
  • ConfigMap
  • DaemonSets
  • Deployment
  • Events
  • Ingress
  • Namespaces
  • ReplicaSets
  • Secrets
  • Services

问答:
https://shimo.im/doc/IZJtw0gvons6MOAr?r=LD952/

Q:node机器推荐命名规则与变化使用经验
A:推荐使用“地理地方+机房编号+机柜号+应用名称”的缩写字母来定名,那样有利于运行人士接二连三的军管和护卫。

Q:为什么要修改etcd与apiserver的监听端口?
A:修改etcd监听IP为0.0.0.0是为了幸免出现监听了lo网卡的1二柒.0.0.壹的IP,出现不能够一连的情形。apiserver则是开启8080端口用于吸收接纳http请求,那样是为着测试时方便不用采取CA证书认证。

Q:请问docker
源怎么弄,国内1般倒霉连接,下载不了?别的还有一.6要升迁到一.柒如何是好?
A:提出接纳正确上网格局,这样就不必要转移配置。一.陆升官到一.七,先截止kubelet服务,然后下载一.7版本的kubernetes-server-linux-amd6肆.tar.gz包,解压替换/usr/bin目录下的同名文件,然后再把kubelet服务运营

Q:在阿拉伯联合共合国酋集群中配备服务,可以将劳动只布署在一个集群中么?
A:能够只陈设服务在四个集群中,通过编制文件中federation.kubernetes.io/replica-set-preference来控制别本分布在哪些集群。

Q:联邦集群的多少个零部件现在有支撑高可用么?没有的话,大家应有怎么幸免联邦组件的bug导致的劳务不可用?
A:联邦集群的Federation组目录未有辅助高可用,但联邦成效首要是为着调度管理k8s集群的,所以联邦集群Federation组件出现故障时并不会直接影响到上面各类集群本身的早已在运转的服务。

感谢

  • 无痴迷,不成功
  • discsthnew

docker-ce.x86_6417.06.2.ce-1.el7.centosdocker-ce-stable

docker-ce.x86_6417.06.1.ce-1.el7.centosdocker-ce-stable

docker-ce.x86_6417.06.0.ce-1.el7.centosdocker-ce-stable

docker-ce.x86_6417.03.2.ce-1.el7.centosdocker-ce-stable

docker-ce.x86_6417.03.1.ce-1.el7.centosdocker-ce-stable

docker-ce.x86_6417.03.0.ce-1.el7.centosdocker-ce-stable

Kubernetes 1.八1度指向Docker的一.1一.二, 一.1二.陆,
一.一3.一和一七.03.二等版本做了印证。
因为大家那边在各节点安装docker的1柒.0三.二版本。

yum makecache fast

yum install-y–setopt=obsoletes=0\

docker-ce-17.03.2.ce-1.el7.centos\

docker-ce-selinux-17.03.2.ce-1.el7.centossystemctl start docker

systemctl enable docker

Docker从一.一3版本开端调节了默许的防火墙规则,禁用了iptables
filter表中FOWA奇骏D链,那样会引起Kubernetes集群中跨Node的Pod不能通信,在1一Docker节点实践上边包车型客车授命:

iptables-P FORWARD ACCEPT

可在docker的systemd unit文件中以ExecStartPost参预地点的下令:

ExecStartPost=/usr/sbin/iptables-P FORWARD ACCEPT

systemctl daemon-reload

systemctl restart docker

2.安装kubeadm和kubelet

上面在各节点安装kubeadm和kubelet:

cat</etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=

测试地点

curl

yum makecache fast

yum install-y kubelet kubeadm
kubectl…Installed:kubeadm.x86_640:1.8.0-0kubectl.x86_640:1.8.0-0kubelet.x86_640:1.8.0-0DependencyInstalled:kubernetes-cni.x86_640:0.5.1-0socat.x86_640:1.7.3.2-2.el7

从安装结果能够观望还设置了kubernetes-cni和socat四个依靠:

能够看到官方Kubernetes 1.捌依靠的cni还是0.5.壹本子

socat是kubelet的依赖

小编们事先在Kubernetes 1.陆高可用集群铺排中手动安装这五个依靠的

Kubernetes文档中kubelet的运维参数:

–cgroup-driverstringDriverthat the kubelet uses to manipulate cgroups
on the host.Possiblevalues:’cgroupfs’,’systemd'(default”cgroupfs”)

私下认可值为cgroupfs,不过大家注意到yum安装kubelet,kubeadm时生成10-kubeadm.conf文件少校那几个参数值改成了systemd。

翻看kubelet的
/etc/systemd/system/kubelet.service.d/十-kubeadm.conf文件,其中蕴藏如下内容:

Environment=”KUBELET_CGROUP_ARGS=–cgroup-driver=systemd”

使用docker info打印docker信息:

docker info……ServerVersion:17.03.2-ce……CgroupDriver:cgroupfs

能够观望docker 壹七.0三施用的Cgroup Driver为cgroupfs。

于是乎修改各节点docker的cgroup
driver使其和kubelet一致,即修改或创办/etc/docker/daemon.json,加入下边的内容:

{“exec-opts”:[“native.cgroupdriver=systemd”]}

重启docker:

systemctl restart docker

systemctl status docker

在各节点开机运转kubelet服务:

systemctl enable kubelet.service

澳门金沙国际,三.施用kubeadm init初步化集群

接下去使用kubeadm早先化集群,选取node一作为Master
Node,在node壹上试行上面包车型地铁一声令下:

kubeadm init
\–kubernetes-version=v1.8.0\–pod-network-cidr=10.244.0.0/16\–apiserver-advertise-address=192.168.61.11

因为大家选拔flannel作为Pod网络插件,所以地点的通令内定–pod-network-cidr=十.24四.0.0/1陆。

kubeadm init
\>–kubernetes-version=v1.8.0\>–pod-network-cidr=10.244.0.0/16\>–apiserver-advertise-address=192.168.61.11[kubeadm]WARNING:kubeadmisinbeta,pleasedonotuseitforproduction
clusters.[init]UsingKubernetesversion:v1.8.0[init]UsingAuthorizationmodes:[NodeRBAC][preflight]Runningpre-flight
checks[preflight]WARNING:firewalldisactive,pleaseensureports[644310250]are
openoryour cluster maynotfunctioncorrectly[preflight]Startingthe
kubelet service[kubeadm]WARNING:startingin1.8,tokens expire
after24hoursbydefault(ifyourequirea non-expiring
tokenuse–token-ttl0)[certificates]Generatedca
certificateandkey.[certificates]Generatedapiserver
certificateandkey.[certificates]apiserver serving certissignedforDNS
names[node1 kubernetes kubernetes.defaultkubernetes.default.svc
kubernetes.default.svc.cluster.local]andIPs[10.96.0.1192.168.61.11][certificates]Generatedapiserver-kubelet-client
certificateandkey.[certificates]Generatedsa
keyandpublickey.[certificates]Generatedfront-proxy-ca
certificateandkey.[certificates]Generatedfront-proxy-client
certificateandkey.[certificates]Validcertificatesandkeys now
existin”/etc/kubernetes/pki”[kubeconfig]WroteKubeConfigfile to
disk:”admin.conf”[kubeconfig]WroteKubeConfigfile to
disk:”kubelet.conf”[kubeconfig]WroteKubeConfigfile to
disk:”controller-manager.conf”[kubeconfig]WroteKubeConfigfile to
disk:”scheduler.conf”[controlplane]WroteStaticPodmanifestforcomponent
kube-apiserver
to”/etc/kubernetes/manifests/kube-apiserver.yaml”[controlplane]WroteStaticPodmanifestforcomponent
kube-controller-manager
to”/etc/kubernetes/manifests/kube-controller-manager.yaml”[controlplane]WroteStaticPodmanifestforcomponent
kube-scheduler
to”/etc/kubernetes/manifests/kube-scheduler.yaml”[etcd]WroteStaticPodmanifestforalocaletcd
instance to”/etc/kubernetes/manifests/etcd.yaml”[init]Waitingforthe
kubelet to boot up the control
planeasStaticPodsfromdirectory”/etc/kubernetes/manifests”[init]Thisoften
takes around a minute;orlongerifthe control plane images have to be
pulled.[apiclient]Allcontrol plane components are healthy
after28.505733seconds[uploadconfig]Storingthe configuration
usedinConfigMap”kubeadm-config”inthe”kube-system”Namespace[markmaster]Willmark
node node1asmasterbyadding a labelanda taint[markmaster]Masternode1
taintedandlabelledwithkey/value:node-role.kubernetes.io/master=””[bootstraptoken]Usingtoken:9e68dd.7117f03c900f9234[bootstraptoken]ConfiguredRBAC
rules to allowNodeBootstraptokens to postCSRsinorderfornodes
togetlongterm certificate credentials[bootstraptoken]ConfiguredRBAC
rules to allow the csrapprover controller automatically
approveCSRsfromaNodeBootstrapToken[bootstraptoken]Creatingthe”cluster-info”ConfigMapinthe”kube-public”namespace[addons]Appliedessential
addon:kube-dns[addons]Appliedessential
addon:kube-proxyYourKubernetesmaster has initialized
successfully!Tostartusingyour cluster,you need to run(asa regular
user):mkdir-p $HOME/.kube

sudo cp-i/etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id-u):$(id-g)$HOME/.kube/configYoushould now deploy a pod
network to the cluster.Run”kubectl apply -f [podnetwork].yaml”withone
of the options listed at:
now join any number of machinesbyrunning the following on each
nodeasroot:kubeadm
join–token9e68dd.7117f03c900f9234192.168.61.11:6443–discovery-token-ca-cert-hash
sha256:82a08ef9c830f240e588a26a8ff0a311e6fe3127c1ee4c5fc019f1369007c0b7

上边记录了成就的初步化输出的内容。

中间由以下重点内容:

kubeadm
一.8当下还处于beta状态,还无法用来生产条件。近日来看那东Charlotte装的etcd和apiserver都以单节点,当然无法用于生产条件。

RBAC情势已经在Kubernetes 1.第88中学平安可用。kubeadm 1.8也私下认可启用了RBAC

接下去是生成证书和连锁的kubeconfig文件,这一个近期大家在Kubernetes 一.陆高可用集群安插也是如此做的,目前没看到有啥样新东西

生成token记录下来,前边使用kubeadm join往集群中增加节点时会用到

其余注意kubeadm还报了starting in 一.8, tokens expire after 二四 hours by
default (if you require a non-expiring token use –token-ttl 0)的告诫

上边的指令是布局常规用户怎么样选用kubectl访问集群:

mkdir-p $HOME/.kube

sudo cp-i/etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id-u):$(id-g)$HOME/.kube/config

聊起底交给了将节点出席集群的一声令下kubeadm join –token
九e68dd.71一柒f03c900f923四 1玖二.16捌.陆一.1一:64四三 –discovery-token-ca-cert-hash
sha256:八二a0捌ef九c830f240e58八a贰陆a8ff0a31一e⑥fe31二柒c一ee肆c伍fc01玖f1369007c0b七

翻开一下集群状态:

kubectlgetcs

NAME                STATUS    MESSAGE              ERROR

schedulerHealthyok

controller-managerHealthyok

etcd-0Healthy{“health”:”true”}

认同个零件都处于healthy状态。

集群开始化若是遇上难点,能够采取下边包车型地铁指令举办清理:

kubeadm reset

ifconfig cni0 down

ip linkdeletecni0

ifconfig flannel.1down

ip linkdeleteflannel.1rm-rf/var/lib/cni/

4.安装Pod Network

接下去安装flannel network add-on:

mkdir-p~/k8s/wget

apply-f  kube-flannel.yml

clusterrole”flannel”created

clusterrolebinding”flannel”created

serviceaccount”flannel”created

configmap”kube-flannel-cfg”created

daemonset”kube-flannel-ds”created

此处注意kube-flannel.yml那么些文件中一度包蕴了ServiceAccount,
ClusterRole和ClusterRoleBinding,原来是在三个独自的kube-flannel-rbac.yml文件中。kube-flannel.yml那些文件里的flannel的镜像是0.九.0,quay.io/coreos/flannel:v0.玖.0-amd6四

若果Node有多个网卡的话,参考flannel issues
39701,近来亟待在kube-flannel.yml中利用–iface参数钦定集群主机内网网卡的名目,不然大概晤面世dns不能解析。须求将kube-flannel.yml下载到本地,flanneld运转参数加上–iface=

……apiVersion:extensions/v1beta1

kind:DaemonSetmetadata:name:kube-flannel-ds……containers:-name:kube-flannel

image:quay.io/coreos/flannel:v0.9.0-amd64

command:[“/opt/bin/flanneld”,”–ip-masq”,”–kube-subnet-mgr”,”–iface=eth1″]……

使用kubectl get pod –all-namespaces -o
wide确认保障全部的Pod都处于Running状态。

kubectlgetpod–all-namespaces-o wide

伍.master node插手工作负荷

行使kubeadm开头化的集群,出于安全着想Pod不会被调度到Master
Node上,也正是说Master Node不参预工作负荷。

此处搭建的是测试环境能够利用下边包车型客车一声令下使Master Node到场工作负荷:

kubectl taint nodes node1
node-role.kubernetes.io/master-node”node1″untainted

6.测试DNS

kubectl run curl–image=radial/busyboxplus:curl-i–ttyIfyou don’t see a
command prompt, try pressing enter.

[ root@curl-2716574283-xr8zd:/ ]$

进去后实行nslookup kubernetes.default确认解析平常:

nslookup
kubernetes.defaultServer:10.96.0.10Address1:10.96.0.10kube-dns.kube-system.svc.cluster.localName:kubernetes.defaultAddress1:10.96.0.1kubernetes.default.svc.cluster.local

7.向Kubernetes集群加多Node

下边我们将k8s-node贰这几个主机增多到Kubernetes集群中,在k捌s-node二上实施:

kubeadm
join–token9e68dd.7117f03c900f9234192.168.61.11:6443–discovery-token-ca-cert-hash
sha256:82a08ef9c830f240e588a26a8ff0a311e6fe3127c1ee4c5fc019f1369007c0b7[kubeadm]WARNING:kubeadmisinbeta,pleasedonotuseitforproduction
clusters.[preflight]Runningpre-flight checks[discovery]Tryingto
connect to APIServer”192.168.61.11:6443″[discovery]Createdcluster-info
discovery client,requesting
infofrom”
to validate TLS against the pinnedpublickey[discovery]Clusterinfo
signatureandcontents are validandTLS certificate validates against
pinned
roots,willuseAPIServer”192.168.61.11:6443″[discovery]Successfullyestablished
connectionwithAPIServer”192.168.61.11:6443″[bootstrap]Detectedserver
version:v1.8.0[bootstrap]Theserver supports
theCertificatesAPI(certificates.k8s.io/v1beta1)Nodejoin
complete:*Certificatesigning request sent to masterandresponse

received.*Kubeletinformed ofnewsecure connection details.Run’kubectl
get nodes’on the master to seethismachine join.

这一次极度弹无虚发,上边在master节点上推行命令查看集群中的节点:

kubectlgetnodes

NAME      STATUS    ROLES    AGE      VERSION

node1Readymaster25mv1.8.0node2Ready10mv1.8.0

怎么着从集群中移除Node

假如急需从集群中移除node2这些Node实践下边包车型客车指令:

在master节点上实施:

kubectl drain node2–delete-local-data–force–ignore-daemonsets

kubectldeletenode node2

在node2上执行:

kubeadm reset

ifconfig cni0 down

ip linkdeletecni0

ifconfig flannel.1down

ip linkdeleteflannel.1rm-rf/var/lib/cni/

捌.dashboard插件安插

在意方今dashboard的本子现已是壹.7.一了。
而1.柒.x版本的dashboard对安全做了加强,私下认可必要以https的情势访问,扩展了登陆的页面,同时扩充了二个gcr.io/google_containers/kubernetes-dashboard-init-amd64的init容器。

此外索要留意dashboard调整了安插文件的源码目录结构:

mkdir-p~/k8s/wget

create-f kubernetes-dashboard.yaml

kubernetes-dashboard.yaml文件中的ServiceAccount kubernetes-dashboard只有相对较小的权位,由此我们创制一个kubernetes-dashboard-admin的ServiceAccount并赋予集群admin的权杖,创制kubernetes-dashboard-admin.rbac.yaml:

—apiVersion:v1

kind:ServiceAccountmetadata:labels:k8s-app:kubernetes-dashboard

name:kubernetes-dashboard-adminnamespace:kube-system—apiVersion:rbac.authorization.k8s.io/v1beta1

kind:ClusterRoleBindingmetadata:name:kubernetes-dashboard-admin

labels:k8s-app:kubernetes-dashboard

roleRef:apiGroup:rbac.authorization.k8s.io

kind:ClusterRolename:cluster-admin

subjects:-kind:ServiceAccountname:kubernetes-dashboard-adminnamespace:kube-system

kubectl create-f kubernetes-dashboard-admin.rbac.yaml

serviceaccount”kubernetes-dashboard-admin”created

clusterrolebinding”kubernetes-dashboard-admin”created

查看kubernete-dashboard-admin的token:

kubectl-n kube-systemgetsecret|grep kubernetes-dashboard-admin

kubernetes-dashboard-admin-token-pfss5 
kubernetes.io/service-account-token314skubectl describe-n kube-system
secret/kubernetes-dashboard-admin-token-pfss5Name:kubernetes-dashboard-admin-token-pfss5Namespace:kube-systemLabels:Annotations:kubernetes.io/service-account.name=kubernetes-dashboard-admin

kubernetes.io/service-account.uid=1029250a-ad76-11e7-9a1d-08002778b8a1Type:kubernetes.io/service-account-tokenData====ca.crt:1025bytesnamespace:11bytes

token:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbi10b2tlbi1wZnNzNSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjEwMjkyNTBhLWFkNzYtMTFlNy05YTFkLTA4MDAyNzc4YjhhMSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiJ9.Bs6h65aFCFkEKBO_h4muoIK3XdTcfik-pNM351VogBJD_pk5grM1PEWdsCXpR45r8zUOTpGM-h8kDwgOXwy2i8a5RjbUTzD3OQbPJXqa1wBk0ABkmqTuw-3PWMRg_Du8zuFEPdKDFQyWxiYhUi_v638G-R5RdZD_xeJAXmKyPkB3VsqWVegoIVTaNboYkw6cgvMa-4b7IjoN9T1fFlWCTZI8BFXbM8ICOoYMsOIJr3tVFf7d6oVNGYqaCk42QL_2TfB6xMKLYER9XDh753-_FDVE5ENtY5YagD3T_s44o0Ewara4P9C3hYRKdJNLxv7qDbwPl3bVFH3HXbsSxxF3TQ

在dashboard的登陆窗口使用方面的token登入。

玖.heapster插件部署

上边安装Heapster为集群增多使用计算和督察效用,为Dashboard增多仪表盘。
使用InfluxDB做为Heapster的后端存款和储蓄,开端铺排:

mkdir-p~/k8s/heapster

cd~/k8s/heapster

wget

create-f./

谈起底确认全体的pod都处于running状态,张开Dashboard,集群的运用总结会以仪表盘的样式呈现出来。

这次安装涉及到的Docker镜像:

gcr.io/google_containers/kube-apiserver-amd64:v1.8.0gcr.io/google_containers/kube-controller-manager-amd64:v1.8.0gcr.io/google_containers/kube-scheduler-amd64:v1.8.0gcr.io/google_containers/kube-proxy-amd64:v1.8.0gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5quay.io/coreos/flannel:v0.9.0-amd64

gcr.io/google_containers/etcd-amd64:3.0.17gcr.io/google_containers/pause-amd64:3.0quay.io/coreos/flannel:v0.9.0-amd64

gcr.io/google_containers/kubernetes-dashboard-amd64:v1.7.1gcr.io/google_containers/kubernetes-dashboard-init-amd64:v1.0.0gcr.io/google_containers/heapster-influxdb-amd64:v1.3.3gcr.io/google_containers/heapster-grafana-amd64:v4.4.3gcr.io/google_containers/heapster-amd64:v1.4.0

相关文章