使用 KUBEADM 安装 KUBERNETES V1.14.0
一, 环境准备
操作系统: CentOS 7.5
一台或多台运行着下列系统的机器: Ubuntu 16.04+ Debian 9 CentOS 7 RHEL 7 Fedora 25/26 (尽服务)
HypriotOS v1.0.1+ Container Linux (针对 1800.6.0 版本测试)
每台机器 2 GB 或多的 RAM (如果少于这个数字将会影响您应用的运内存)2 CPU 核心或更多集群中的所有机的络彼此均能相互连接 (公和内都可以)
节点之中不可以有重复的主机名, Mac 地址, product_uuid. 更多详细信息请参见这里 .开启主机上的一些特定端口. 更多详细信息请参见这.禁用 Swap 交换分区
. 为了保证 kubelet 正确运行, 必须 禁用交换分区.
二, 安装步骤
1. 定义 hostname
hostname k8s-master
2. 编辑 /etc/hosts
- vi /etc/hosts
- # 当然我们在这根据实际情况指定的 ip 地址即可
- 192.168.194.135 k8s-master
3. 禁用交换分区等操作
- # 将 SELinux 设置为 permissive 模式 (将其禁用)
- setenforce 0
- sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
- # 可先不运行
- cat <<EOF> /etc/sysctl.d/k8s.conf
- net.bridge.bridge-nf-call-ip6tables = 1
- net.bridge.bridge-nf-call-iptables = 1
- EOF
- sysctl --system
4. 配置 yum 源并安装相关核件
- cat <<EOF> /etc/yum.repos.d/kubernetes.repo
- [kubernetes]
- name=Kubernetes
- baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=0
- repo_gpgcheck=0
- gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
- http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
- EOF
- yum install -y docker kubelet kubeadm kubectl --disableexcludes=kubernetes
5. 设置 docker 与 kubelet 开机启动
- systemctl enable kubelet
- systemctl enable docker
- systemctl start docker
6. 下载 kubernetes 所需镜像
我们事先可以通过如下命令查看所依赖的 docker 镜像版本 kubeadm config images list , 然后通过国内镜像仓库下载所需的镜像文件:
- docker pull mirrorgooglecontainers/kube-apiserver:v1.14.1
- docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.1
- docker pull mirrorgooglecontainers/kube-scheduler:v1.14.1
- docker pull mirrorgooglecontainers/kube-proxy:v1.14.1
- docker pull mirrorgooglecontainers/pause:3.1
- docker pull mirrorgooglecontainers/etcd:3.3.10
- docker pull coredns/coredns:1.3.1
注意: 在这的版本号一定要先通过上述命令查看后在填写, 本中的是 v1.14.0 后续可能版本会有变化, 因为国内的源随时可能新 k8s 的版本
7. 改镜像名称
- docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
- docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1
- docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1
- docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
- docker tag docker.io/mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
- docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
- docker tag docker.io/coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
删除原先的镜像:
- docker image rm docker.io/mirrorgooglecontainers/kube-apiserver:v1.14.1
- docker image rm docker.io/mirrorgooglecontainers/kube-controller-manager:v1.14.1
- docker image rm docker.io/mirrorgooglecontainers/kube-scheduler:v1.14.1
- docker image rm docker.io/mirrorgooglecontainers/kube-proxy:v1.14.1
- docker image rm docker.io/mirrorgooglecontainers/pause:3.1
- docker image rm docker.io/mirrorgooglecontainers/etcd:3.3.10
- docker image rm docker.io/coredns/coredns:1.3.1
8. 初始化 master 环境
kubeadm init --kubernetes-version v1.14.1 --pod-network-cidr 10.244.0.0/16 --ignore-preflight-errors=NumCPU
当运行成功后会出现的提示信息, 我们注意以下几点
根据提示信息我们可以运行
- mkdir -p $HOME/.kube
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- sudo chown $(id -u):$(id -g) $HOME/.kube/config
记录加入 token 的秘钥
- kubeadm join 172.17.0.13:6443 --token a5tzoh.svr1xpsh2kpdjfcn --discovery-token-ca-cert-hash sha256:816577e3c2b2c3184002f49089de08963dd34e63166017bbe7edbeba15fdc2b2
- #19.4.22 15:16
- kubeadm join 172.19.67.179:6443 --token b3vz9z.3e15folsd6h4pzbi \
- --discovery-token-ca-cert-hash sha256:461913a92fbbbf0adc18808ed1c796b5d80c45183611d2d54e09624c85a550e9
- #19.4.22 15.47
- kubeadm join 172.19.67.179:6443 --token p65zw9.i3tfyz1pcgihy6i2
- --discovery-token-ca-cert-hash sha256:f397790ffdfe0d2ee5d9fc67a3e04acd00554e8c23e8da78bf9ead347c8dd67a
- #19.4.24 15.35
按需开启 master 创建 pod 的功能
kubectl taint nodes --all node-role.kubernetes.io/master-
默认情况出于安全考虑 master 节点是允许创建 pod 的, 我们可以通过如上命令开启此功能
安装网络插件
- $ iptables -P FORWARD ACCEPT
- $ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
当所有运完成后 我们可以通过 kubectl get pod --all-namespaces 来查看 pod 的运行状态, 当所有为 run 的状态时, 证明启动完毕.
来源: https://www.cnblogs.com/zgwjava/p/10784292.html