kubeadm安装k8s 1.6.4

基本环境:
centos 7.2 x64

  • 使用外部etcd集群
  • 使用LVS-VIP作为API
  • 普通节点上不调度除了openstack以外的任何pod(包括flannel等kube-system的pod)
  • 普通节点上尽量不操作任何物理机的iptables和网卡
  • 认证流程
  • api/scheduler/controller 的镜像
  • kubernetes 二进制的编译制作

初始化操作:

  1. 更新软件包
yum update systemd
yum update dracut
  1. 关闭SElinux
# Use Enforcing or 1 to put SELinux in enforcing mode.
# Use Permissive or 0 to put SELinux in permissive mode.
setenforce 0
  1. 关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
  1. 添加/etc/hosts
echo -n " 
192.4.5.6 docker-registry
10.202.145.86 node1
10.202.145.85 node2
" >>/etc/hosts

安装docker

  1. 安装
    yum install docker

docker --version
Docker version 1.12.6, build 3a094bd/1.12.6

  1. 修改配置
    修改docker配置文件/etc/sysconfig/docker,确保可以在docker私有仓库中拉到镜像
    -INSECURE_REGISTRY='--insecure-registry docker-registry:5000'
    +# INSECURE_REGISTRY='--insecure-registry'

可执行如下命令自动替换:

cp -vf /etc/sysconfig/docker /etc/sysconfig/docker.bak
perl -p -i -e "s/\#\ INSECURE_REGISTRY=\'--insecure-registry\'/INSECURE_REGISTRY=\'--insecure-registry\ docker-registry:5000\'/" /etc/sysconfig/docker

==关闭docker对iptables的控制==

/etc/sysconfig/docker 文件添加--iptables=false 选项

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --iptables=false'
  1. 启动
systemctl enable docker
systemctl start docker
# 如果之前已经启动,需要重启使配置生效。
systemctl restart docker
  1. 确认是否配置成功
    启动成功后,可以测试一下是否可用:
docker pull docker-registry:5000/gcr.io/google_containers/etcd-amd64:3.0.17

系统配置

echo net.bridge.bridge-nf-call-ip6tables = 1 > /etc/sysctl.d/k8s.conf
echo net.bridge.bridge-nf-call-iptables = 1 >> /etc/sysctl.d/k8s.conf
sysctl -p /etc/sysctl.d/k8s.conf

安装k8s官方包

  1. 安装依赖包
yum install socat
  1. 安装k8s相关包 kubelet kubeadm kubectl kubernetes-cni
    这些包都需要装,kubeadm依赖其他三个包。
    安装v1.6.4版本:
cd
mkdir v1.6.4
cd v1.6.4
wget -c -r -np -nd -A *.rpm http://10.195.156.81:8888/kubenetes/v1.6.4/
rpm -ivh *.rpm
  1. 修改配置
    在启动kubelet之前我们需要先修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,为kubelet添加一个额外的参数如下,这样kubelet可以直接到私有仓库拉取pause-amd64:3.0镜像
    --pod-infra-container-image=docker-registry:5000/gcr.io/google_containers/pause-amd64:3.0

也可以执行如下命令自动替换:

cd /etc/systemd/system/kubelet.service.d/
\cp -vf 10-kubeadm.conf 10-kubeadm.conf.bak
grep "KUBELET_EXTRA_ARGS " 10-kubeadm.conf || perl -p -i -e "s/KUBELET_EXTRA_ARGS/KUBELET_EXTRA_ARGS --pod-infra-container-image=docker-registry:5000\/gcr.io\/google_containers\/pause-amd64:3.0/" 10-kubeadm.conf

以上所有操作在所有集群节点上执行

  1. 初始化master节点,用到的镜像通过私有仓库提供
    v1.6.4初始化:
export KUBE_REPO_PREFIX=docker-registry:5000/gcr.io/google_containers \
KUBE_HYPERKUBE_IMAGE=docker-registry:5000/gcr.io/google_containers/hyperkube-amd64:v1.6.4 \
KUBE_DISCOVERY_IMAGE=docker-registry:5000/gcr.io/google_containers/kube-discovery-amd64:1.0 \
KUBE_ETCD_IMAGE=docker-registry:5000/gcr.io/google_containers/etcd-amd64:3.0.17
kubeadm init --pod-network-cidr="10.24.0.0/16" --kubernetes-version=v1.6.4 --apiserver-advertise-address=10.198.66.242

==对接外部etcd集群==

# file: deploy.yaml
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
#kubernetesVersion: "stable-1.7"
kubernetesVersion: "stable-1.6"
api:
  advertiseAddress: 10.202.4.169
  bindPort: 8080
etcd:
  endpoints:
  - http://10.202.4.169:2379
# 这个取决于kube-flannel.yml文件中定义的net-conf.json里的
networking:
  podSubnet: 172.28.0.0/14
export KUBE_REPO_PREFIX=docker-registry:5000/gcr.io/google_containers \
KUBE_HYPERKUBE_IMAGE=docker-registry:5000/gcr.io/google_containers/hyperkube-amd64:v1.6.4 \
KUBE_DISCOVERY_IMAGE=docker-registry:5000/gcr.io/google_containers/kube-discovery-amd64:1.0

kubeadm init --config deploy.yaml

5、配置权限访问apiserver
为了使用kubectl访问apiserver,在~/.bashrc中追加下面的环境变量:

export KUBECONFIG=/etc/kubernetes/admin.conf
source ~/.bashrc

此时kubectl命令在master node上就好用了,查看一下当前机器中的Node:

kubectl get nodes

安装Pod Network

1、安装flannel network

# 其中镜像 quay.io/coreos/flannel:v0.7.1-amd64 已经是最新的
kubectl create -f  kubenetes/kube-flannel-yaml/kube-flannel-rbac.yml
kubectl apply -f  kubenetes/kube-flannel-yaml/kube-flannel.yml

2、查看确保所有的Pod都处于Running状态。

kubectl get pod --all-namespaces -o wide

五、使master node参与工作负载
使用kubeadm初始化的集群,出于安全考虑Pod不会被调度到Master Node上,也就是说Master Node不参与工作负载。
可以使用下面的命令使Master Node参与工作负载:

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

六、添加其他节点
1、可以先测试一下DNS是否可用

2、添加节点
在其他主机上直接执行如下操作即可:

kubeadm join --token 14cc9d.cb2d9fef16a2fb86 10.202.145.86:6443

==独立部署kubelet,不使用CNI,不操作iptables,不调度非openstack服务==

# 预先拷贝认证文件/etc/kubernetes/pki/ca.crt
# 预先拷贝配置文件(指定了server)/etc/kubernetes/kubelet.conf
# 这个配置文件的内容还需要再考虑一下,是否可以去掉这个, 直接使用--api-servers

kubelet --kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=kubenet  --authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt --cgroup-driver=systemd --pod-cidr=169.254.169.0/24 --register-with-taints="openstack=ture:NoSchedule"

做上述安装后,系统的iptables如下:

# Generated by iptables-save v1.4.21 on Tue Aug 22 16:45:37 2017
*filter
:INPUT ACCEPT [450:65525]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [285:65520]
:KUBE-FIREWALL - [0:0]
-A INPUT -j KUBE-FIREWALL
-A OUTPUT -j KUBE-FIREWALL
-A KUBE-FIREWALL -m comment --comment "kubernetes firewall for dropping marked packets" -m mark --mark 0x8000/0x8000 -j DROP
COMMIT
# Completed on Tue Aug 22 16:45:37 2017
# Generated by iptables-save v1.4.21 on Tue Aug 22 16:45:37 2017
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:KUBE-MARK-DROP - [0:0]
:KUBE-MARK-MASQ - [0:0]
:KUBE-POSTROUTING - [0:0]
-A POSTROUTING -m comment --comment "kubernetes postrouting rules" -j KUBE-POSTROUTING
-A POSTROUTING ! -d 10.0.0.0/8 -m comment --comment "kubenet: SNAT for outbound traffic from cluster" -m addrtype ! --dst-type LOCAL -j MASQUERADE
-A KUBE-MARK-DROP -j MARK --set-xmark 0x8000/0x8000
-A KUBE-MARK-MASQ -j MARK --set-xmark 0x4000/0x4000
-A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT" -m mark --mark 0x4000/0x4000 -j MASQUERADE
COMMIT
# Completed on Tue Aug 22 16:45:37 2017

前提条件:安装依赖环境到之前安装步骤的三.3

安装Dashboard

1、安装

kubectl create -f kubenetes/kubernetes-dashboard-v1.6.1.yaml

2、安装Heapster为集群添加使用统计和监控功能,为Dashboard添加仪表盘

kubectl create -f  kubenetes/heapster-master-2ca8178a/rbac/heapster-rbac.yaml
kubectl create -f kubenetes/heapster-master-2ca8178a/influxdb/grafana.yaml
kubectl create -f kubenetes/heapster-master-2ca8178a/influxdb/heapster.yaml
kubectl create -f kubenetes/heapster-master-2ca8178a/influxdb/influxdb.yaml

3、通过proxy方式启动
kubectl proxy --address='' --accept-hosts='.+' &

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341