Kubeadm部署Kubernetes1.14.3集群

一、环境说明

主机名 IP地址 角色 系统
node11 192.168.11.11 k8s-master Centos7.6
node12 192.168.11.12 k8s-node Centos7.6
node13 192.168.11.13 k8s-node Centos7.6

注意:官方建议每台机器至少双核2G内存,同时需确保MAC和product_uuid唯一(参考下面的命令查看)

二、环境配置

以下命令在三台主机上均需运行

1、设置阿里云yum源(可选)

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2、安装依赖包

yum install -y epel-release conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

3、关闭防火墙

systemctl stop firewalld && systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

4、关闭SELinux

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

5、关闭swap分区

swapoff -a
sed -i ‘/ swap / s/^\(.*\)$/#\1/g‘ /etc/fstab

6、设置内核参数

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

sysctl -p /etc/sysctl.d/k8s.conf

7、安装Docker

1、首先卸载旧版:

yum remove docker            docker-client            docker-client-latest            docker-common            docker-latest            docker-latest-logrotate            docker-logrotate            docker-selinux            docker-engine-selinux            docker-engine

2、安装依赖包:

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

3、设置安装源(阿里云):

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、启用测试库(可选):

yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test

5、安装:

yum makecache fast
yum install -y docker-ce

6、启动:

systemctl start docker

开机自启

systemctl enable docker

Docker建议配置阿里云镜像加速

安装完成后配置启动时的命令,否则docker会将iptables FORWARD chain的默认策略设置为DROP

另外Kubeadm建议将systemd设置为cgroup驱动,所以还要修改daemon.json

sed -i "13i ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT" /usr/lib/systemd/system/docker.service

tee /etc/docker/daemon.json <<-‘EOF‘
{
  "registry-mirrors": ["https://bk6kzfqm.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

systemctl daemon-reload
systemctl restart docker

7、安装kubeadm和kubelet

配置源

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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum makecache fast

安装

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

8、拉取所需镜像

先从阿里云拉取所需的镜像,不然会从谷歌拉取,导致拉取失败。

拉取镜像:

images=(kube-controller-manager-amd64 etcd-amd64 k8s-dns-sidecar-amd64 kube-proxy-amd64 kube-apiserver-amd64 kube-scheduler-amd64 pause-amd64 k8s-dns-dnsmasq-nanny-amd64 k8s-dns-kube-dns-amd64)
for imageName in ${images[@]} ; do
 docker pull champly/$imageName
 docker tag champly/$imageName gcr.io/google_containers/$imageName
 docker rmi champly/$imageName
done

修改版本

docker tag gcr.io/google_containers/etcd-amd64 gcr.io/google_containers/etcd-amd64:3.0.17 && docker rmi gcr.io/google_containers/etcd-amd64 && docker tag gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5 && docker rmi gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 && docker tag gcr.io/google_containers/k8s-dns-kube-dns-amd64 gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5 && docker rmi gcr.io/google_containers/k8s-dns-kube-dns-amd64 && docker tag gcr.io/google_containers/k8s-dns-sidecar-amd64 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.2 && docker rmi gcr.io/google_containers/k8s-dns-sidecar-amd64 && docker tag gcr.io/google_containers/kube-apiserver-amd64 gcr.io/google_containers/kube-apiserver-amd64:v1.7.5 && docker rmi gcr.io/google_containers/kube-apiserver-amd64 && docker tag gcr.io/google_containers/kube-controller-manager-amd64 gcr.io/google_containers/kube-controller-manager-amd64:v1.7.5 && docker rmi gcr.io/google_containers/kube-controller-manager-amd64 && docker tag gcr.io/google_containers/kube-proxy-amd64 gcr.io/google_containers/kube-proxy-amd64:v1.6.0 && docker rmi gcr.io/google_containers/kube-proxy-amd64 && docker tag gcr.io/google_containers/kube-scheduler-amd64 gcr.io/google_containers/kube-scheduler-amd64:v1.7.5 && docker rmi gcr.io/google_containers/kube-scheduler-amd64 && docker tag gcr.io/google_containers/pause-amd64 gcr.io/google_containers/pause-amd64:3.0 && docker rmi gcr.io/google_containers/pause-amd64

三、初始化集群

以下命令如无特殊说明,均在node11上执行

1、使用kubeadm init初始化集群(注意修改最后为本机IP)

kubeadm init   --kubernetes-version=v1.14.3   --pod-network-cidr=10.244.0.0/16   --apiserver-advertise-address=192.168.11.11 

初始化成功后会输出类似下面的加入命令,暂时无需运行,先记录。

kubeadm join 192.168.11.11:6443 --token 4kkgk2.ht4hnyeinhk6pwod     --discovery-token-ca-cert-hash sha256:8a3d03e783e82b1a066957e3311dd94fa2b76372b9c2b0bc3597a5e357ea5ca9 

2、为需要使用kubectl的用户进行配置

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

检查集群状态

kubectl get cs

3、安装Pod Network(使用七牛云镜像)

curl -o kube-flannel.yml https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i "s/quay.io\/coreos\/flannel/quay-mirror.qiniu.com\/coreos\/flannel/g" kube-flannel.yml
kubectl apply -f kube-flannel.yml
rm -f kube-flannel.yml

使用下面的命令确保所有的Pod都处于Running状态,可能要等到许久。

  1. kubectl get pod --all-namespaces -o wide

4、向Kubernetes集群中添加Node节点

在node12和node13上运行之前在node11输出的命令

kubeadm join 192.168.11.11:6443 --token 4kkgk2.ht4hnyeinhk6pwod     --discovery-token-ca-cert-hash sha256:8a3d03e783e82b1a066957e3311dd94fa2b76372b9c2b0bc3597a5e357ea5ca9 

查看集群中的节点状态,可能要等等许久才Ready

kubectl get nodes

5、kube-proxy开启ipvs

kubectl get configmap kube-proxy -n kube-system -o yaml > kube-proxy-configmap.yaml
sed -i ‘s/mode: ""/mode: "ipvs"/‘ kube-proxy-configmap.yaml
kubectl apply -f kube-proxy-configmap.yaml
rm -f kube-proxy-configmap.yaml
kubectl get pod -n kube-system | grep kube-proxy | awk ‘{system("kubectl delete pod "$1" -n kube-system")}‘ 

四、部署kubernetes-dashboard

1、生成访问证书

grep ‘client-certificate-data‘ ~/.kube/config | head -n 1 | awk ‘{print $2}‘ | base64 -d >> kubecfg.crt
grep ‘client-key-data‘ ~/.kube/config | head -n 1 | awk ‘{print $2}‘ | base64 -d >> kubecfg.key
openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"

将生成的kubecfg.p12证书导入到Windows中,直接双击打开,下一步导入即可。

注意:导入完成后需重启浏览器。

2、生成访问Token

新建文件admin-user.yaml:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

创建角色及绑定账号

kubectl create -f admin-user.yaml

获取Token

kubectl describe secret admin-user --namespace=kube-system

eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWhydmxrIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmOGE0YzY4NC04Yjc1LTExZTktYjE2ZC0wMDBjMjk5ZGViOWUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.FftzgCCzKiWKNghPDBDqAfBJPwUgHbEJGMv5fEBEq53oV8O3vlGHmZGRqjUYHiye2qhdg084iIRDv-w03b2KroEiMX0nXYN0l73-XlEl6ecU_v7-66xiS9fDPR0JiI6SW_cyL5k16P4qIwBwk1ze99r_R0t2Q8xiplFMVW02u0zM0IG2xtT5AaXqV5uEX3kg6nThloOmxFGbyIPF743D0WEtbNicVI2YYIPM7B8CxnHZ5_9MJ5qLtjVAttomLy30O5VEgweljnaL70tja_M9DlLsBV1O8q01AFZhfBPPaNtuDrPU-OZkVb9isiMYiL92lQLEIGswWlTj-uhmSTQYGA

此次先记录下生成的Token

3、部署kubernetes-dashboard

curl -o kubernetes-dashboard.yaml https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
vi kubernetes-dashboard.yaml
修改image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1为:
image: mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1    125行
kubectl apply -f kubernetes-dashboard.yaml

4、访问

https://192.168.11.11:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

192.168.11.11为MasterIP,6443为apiserver-port

然后在登录选项中选择令牌登录,复制进刚刚生成的令牌即可。

原文地址:https://blog.51cto.com/14268033/2408590

时间: 2024-08-01 12:29:36

Kubeadm部署Kubernetes1.14.3集群的相关文章

使用kubeadm在CentOS上搭建Kubernetes1.14.3集群

练习环境说明:参考1 参考2 主机名称 IP地址 部署软件 备注 M-kube12 192.168.10.12 master+etcd+docker+keepalived+haproxy master M-kube13 192.168.10.13 master+etcd+docker+keepalived+haproxy master M-kube14 192.168.10.14 master+etcd+docker+keepalived+haproxy master N-kube15 192.

Kubernetes系列之kubeadm部署多节点master集群

版本信息 linux Centos7 kubernetes v1.14.5 docker v18.06.1-ce 节点信息 VIP:47.110.19.11 阿里云负载均衡 安装前准备 开始部署前确保所有节点网络正常,能访问公网.主要操作都在VPC-OPEN-MASTER001节点进行,设置VPC-OPEN-MASTER001可以免密码登陆其他节点.所有操作都使用root用户身份进行. 服务器说明 我们这里使用的是五台centos-7.6的虚拟机,具体信息如下表: 系统类型 IP地址 节点角色

CentOS7.x通过kubeadmin安装部署Kubernetes1.5.2集群

(一).环境 IP地址 系统 功能 192.168.4.21 CentOS7.4 Master 192.168.4.20 CentOS7.4 node1 192.168.4.19 CentOS7.4 node2 (二).基础环境安装配置(每一台服务器都要执行) 1.关闭防火墙 [[email protected] ~]# systemctl stop firewalld [[email protected] ~]# systemctl disable firewalld 2.创建/etc/sys

kubeadm部署kubernetes 1.12集群

kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践. 在Kubernetes的文档Creating a single master cluster with kubeadm中已经给出了目前kubeadm的主要特性已经处于beta状态了,在2018年将进入GA状态,说明kube

kubeadm部署高可用K8S集群(v1.14.0)

一. 集群规划 主机名 IP 角色 主要插件 VIP 172.16.1.10 实现master高可用和负载均衡 k8s-master01 172.16.1.11 master kube-apiserver.kube-controller.kube-scheduler.kubelet.kube-proxy.kube-flannel.etcd k8s-master02 172.16.1.12 master kube-apiserver.kube-controller.kube-scheduler.k

用 kubeadm 部署生产级 k8s 集群

概述 kubeadm?已?持集群部署,且在1.13?版本中?GA,?持多?master,多?etcd?集群化部署,它也是官?最为推荐的部署?式,?来是由它的?sig?组来推进的,?来?kubeadm?在很多??确实很好的利?了?kubernetes?的许多特性,接下来?篇我们来实践并了解下它的魅?. ?标 1. 通过 kubeadm 搭建?可? kubernetes 集群,并新建管理?户 2. 为后续做版本升级演示,此处使?1.13.1版本,到下?篇再升级到 v1.14 3. kubeadm 的

kubeadm部署单master Kuberntes集群

本文参考kubernetes docs 使用kubeadm创建single master的Kuberntes集群 虚机两台Centos75 Kubernetes Yum Repo采用国内阿里源 版本 v1.14.1 (该版本发布时间2019-04-09) Pod网络采用Calico 1 配置镜像源 以yum为例,Ubuntu可以采用中科大ustc的源 官方Google源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] n

kubeadm部署k8s-v1.11.1集群

一.环境准备 master:192.168.0.8,kubelet,kubeadm,kubectl:apiserver,manager,scheduler,proxy,pause,etcd,coredns node01:192.168.0.9,kubeadm,kubelet node02:192.168.0.10,kubeadm,kubelet 节点网络:192.168.0.0/24 Service网络:10.96.0.0/12 Pod网络:10.244.0.0/16(flannel默认) 1.

来了,老弟!__二进制部署kubernetes1.11.7集群

Kubernetes容器集群管理 Kubernetes介绍 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S.K8S是Google内部一个叫Borg的容器集群管理系统衍生出来的,Borg已经在Google大规模生产运行十年之久.K8S主要用于自动化部署.扩展和管理容器应用,提供了资源调度.部署管理.服务发现.扩容缩容.监控等一整套功能.2015年7月,Kubernetes v1.0正式发布.Kubernetes目标是让