k8s 环境搭建

k8s 安装指南

介绍

  • kubectl用于运行Kubernetes集群命令的管理工具。
  • kubelet是主要的节点代理,它会监视已分配给节点的pod,具体功能:
  • kubeadm Kubeadm 是一个工具

本次安装版本为:

  • Kubernetes v1.19.2
  • Docker

环境准备

  • 操作系统

  • 集群配置

    IP 角色 cpu 内存
    192.168.31.121 k8smaster 1 4G
    192.168.31.131 k8snode1 1 4G
    192.168.31.132 k8snode2 1 4G

192.168.31.121 k8smaster
192.168.31.131 k8snode1
192.168.31.132 k8snode2

系统配置

  • 禁用selinux
  • 禁用swap
  • 设置rpm镜像源

安装docker

  • 设置containerd.io源
     wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
     yum install containerd.io-1.2.6-3.3.el7.x86_64.rpm
    
  • 安装docker
    curl -sSL https://get.daocloud.io/docker | sh
    
  • 设置阿里云加速器并设置docker以systemd驱动启动
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "exec-opts":["native.cgroupdriver=systemd"],   
    "log-driver": "json-file",
        "log-opts": {
        "max-size": "100m"
     },
    "storage-driver": "overlay2",
    "storage-opts": [
        "overlay2.override_kernel_check=true"
    ], 
    "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  • 启动容器
    sudo systemctl restart docker
    

添加阿里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

k8s master 安装

yum install kubectl kubelet kubeadm
systemctl enable kubelet

初始化集群

kubeadm init --kubernetes-version=1.19.2  \
--apiserver-advertise-address=192.168.31.121   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

参数说明:

  • apiserver-advertise-address: k8smaster ip地址
  • image-repository 用来拉取 k8s 的镜像仓库地址
  • service-cidr 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。
  • pod-network-cidr Pod 网络的范围

初始化完毕返回如下信息表示成功:

Your Kubernetes control-plane 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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.31.121:6443 --token 8gkv2e.futyk4tc5ekh9p1g \
    --discovery-token-ca-cert-hash sha256:55931b102e704c98ce1acc63a0052789579ddbc9c2dcfccbc8fb7f9bb8f51573 

查看状态

kubectl get node
kubectl get pod --all-namespaces

node节点为NotReady,因为corednspod没有启动,缺少网络pod

安装网络

这里选择calico网络

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

安装完网络后,等待片刻查看状态发现都启动成功了。

[root@k8smaster .kube]# kubectl get pod --all-namespaces
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-c9784d67d-8p2qd   1/1     Running   0          2m59s
kube-system   calico-node-drm2r                         1/1     Running   0          2m59s
kube-system   coredns-6d56c8448f-gp4n9                  1/1     Running   0          14m
kube-system   coredns-6d56c8448f-hsmkm                  1/1     Running   0          14m
kube-system   etcd-k8smaster                            1/1     Running   0          14m
kube-system   kube-apiserver-k8smaster                  1/1     Running   0          14m
kube-system   kube-controller-manager-k8smaster         1/1     Running   0          14m
kube-system   kube-proxy-n2vzn                          1/1     Running   0          14m
kube-system   kube-scheduler-k8smaster                  1/1     Running   0          14m
[root@k8smaster .kube]# kubectl get node
NAME        STATUS   ROLES    AGE   VERSION
k8smaster   Ready    master   15m   v1.19.2

安装dashborad

  • 安装
    wget  https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
    kubectl apply -f recommended.yaml
    
  • 自定义token生成
    mkdir dashboard-certs
    cd dashboard-certs/
    #创建命名空间
    kubectl create namespace kubernetes-dashboard
    # 创建key文件
    openssl genrsa -out dashboard.key 2048
    #证书请求
    openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'
    #自签证书
    openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
    #创建kubernetes-dashboard-certs对象
    kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
    
  • 设置管理员
#创建账号:
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: dashboard-admin
  namespace: kubernetes-dashboard

---
#为用户分配权限:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin-bind-cluster-role
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin
  namespace: kubernetes-dashboard

使管理员生效

kubectl apply dashboard-admin.yaml
  • 查看dashboard-admin账户的登录 token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

工作站点接入

  1. 将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下
  2. 执行脚本
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

参考文档

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