zoukankan      html  css  js  c++  java
  • macbook M1芯片在centos8下安装k8s笔记

    mac上先安装好centos8系统,网上有修改好能够在mac的vmware上安装的镜像
    Docke Docke r安装 (master and node)
    安装必要的一些系统工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
    设置stable镜像aliyun aliyun aliyun仓库
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum makecache fast # 更新yum软件包索引
    yum list docker-ce --showduplicates | sort -r #查看版本
    yum remove podman -y #centos8才需要
    yum install docker-ce docker-ce-cli containerd.io --allowerasing
    systemctl start docker
    systemctl enable docker -- now
    设置 Docker 镜像加速器
    修改docker 配置以适应kubelet
    vi /etc/docker/daemon.json
    {
    "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    systemctl daemon-reload
    systemctl restart docker
     
     
    关闭防火墙
    systemctl disable firewalld
    systemctl stop firewalld
     
    关闭 Swap
    swapoff -a
    sed -i 's/.*swap.*/#&/' /etc/fstab
     
    关闭selinux
    vim /etc/selinux/config 如下
    SELINUX=disabled # 修改此项
     
    setenforce 0
     
    vi /etc/sysctl.d/k8s.conf 文件,添加如下内容:
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    #执行如下命令使修改生效:
    modprobe br_netfilter
    sysctl -p /etc/sysctl.d/k8s.conf
     
    加载ipvs模块
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    lsmod | grep ip_vs
    lsmod | grep nf_conntrack_ipv4
    yum install -y ipvsadm ipset
     
    kubeadm、kubelet、kubectl安装
    vi /etc/yum.repos.d/kubernetes.repo
     
    [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64/ enabled=1 gpgcheck=1 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
     
    yum list kubeadm --showduplicates |sort -r
    卸载:yum remove kubeadm.x86_64 kubectl.x86_64 kubelet.x86_64 -y
    方式1:yum install kubeadm kubectl kubelet -y
    方式2:yum install kubeadm-1.21.5 kubectl-1.21.5 kubelet-1.21.5 -y
    节点对应的位置即可使用kubectl命令行工具了
    kubectl version
    启动kubelet
    systemctl daemon-reload
    systemctl start kubelet.service
    systemctl enable kubelet.service
    systemctl status kubelet.service
     
    systemctl enable docker.service
    systemctl enable kubelet.service
     
    #初始化
    kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.23.1 --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/16 --apiserver-advertise-address=192.168.90.135
     
    下面的命令是配置如何使用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 all -A
     
    kubectl apply -f kube-flannel.yaml
    kubectl get ds -l app=flannel -n kube-system
     
    kubectl describe node caomj |grep Taint
    kubectl taint nodes caomj node-role.kubernetes.io/master-
    kubectl describe configmap kube-proxy -n kube-system
    kubectl edit configmap kube-proxy -n kube-system
    mode: "ipvs"
    k delete pod *1
     
     
    本地镜像文件dashboard.yaml
     
    ##################dashboard.yaml文件开始#########################
    # Copyright 2017 The Kubernetes Authors.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    # http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.

    apiVersion: v1
    kind: Namespace
    metadata:
    name: kubernetes-dashboard

    ---

    apiVersion: v1
    kind: ServiceAccount
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

    ---

    kind: Service
    apiVersion: v1
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    spec:
    type: NodePort #NodePort方式
    ports:
    - port: 443
    targetPort: 8443
    nodePort: 31234 #NodePort方式
    selector:
    k8s-app: kubernetes-dashboard

    ---

    #apiVersion: v1
    #kind: Secret
    #metadata:
    # labels:
    # k8s-app: kubernetes-dashboard
    # name: kubernetes-dashboard-certs
    # namespace: kubernetes-dashboard
    #type: Opaque

    ---

    apiVersion: v1
    kind: Secret
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard-csrf
    namespace: kubernetes-dashboard
    type: Opaque
    data:
    csrf: ""

    ---

    apiVersion: v1
    kind: Secret
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard-key-holder
    namespace: kubernetes-dashboard
    type: Opaque

    ---

    kind: ConfigMap
    apiVersion: v1
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard-settings
    namespace: kubernetes-dashboard

    ---

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    rules:
    # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
    - apiGroups: [""]
    resources: ["secrets"]
    resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
    verbs: ["get", "update", "delete"]
    # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
    - apiGroups: [""]
    resources: ["configmaps"]
    resourceNames: ["kubernetes-dashboard-settings"]
    verbs: ["get", "update"]
    # Allow Dashboard to get metrics.
    - apiGroups: [""]
    resources: ["services"]
    resourceNames: ["heapster", "dashboard-metrics-scraper"]
    verbs: ["proxy"]
    - apiGroups: [""]
    resources: ["services/proxy"]
    resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]
    verbs: ["get"]

    ---

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    rules:
    # Allow Metrics Scraper to get metrics from the Metrics server
    - apiGroups: ["metrics.k8s.io"]
    resources: ["pods", "nodes"]
    verbs: ["get", "list", "watch"]

    ---

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: kubernetes-dashboard
    subjects:
    - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

    ---

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: kubernetes-dashboard
    subjects:
    - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

    ---

    kind: Deployment
    apiVersion: apps/v1
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    spec:
    replicas: 1
    revisionHistoryLimit: 10
    selector:
    matchLabels:
    k8s-app: kubernetes-dashboard
    template:
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    spec:
    containers:
    - name: kubernetes-dashboard
    #image: registry.cn-hangzhou.aliyuncs.com/kubernetesui/dashboard:v2.0.0-beta5
    image: kubernetesui/dashboard-arm64:v2.0.5
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 8443
    protocol: TCP
    args:
    - --auto-generate-certificates
    - --namespace=kubernetes-dashboard
    # Uncomment the following line to manually specify Kubernetes API server Host
    # If not specified, Dashboard will attempt to auto discover the API server and connect
    # to it. Uncomment only if the default does not work.
    # - --apiserver-host=http://my-address:port
    volumeMounts:
    - name: kubernetes-dashboard-certs
    mountPath: /certs
    # Create on-disk volume to store exec logs
    - mountPath: /tmp
    name: tmp-volume
    livenessProbe:
    httpGet:
    scheme: HTTPS
    path: /
    port: 8443
    initialDelaySeconds: 30
    timeoutSeconds: 30
    volumes:
    - name: kubernetes-dashboard-certs
    secret:
    secretName: kubernetes-dashboard-certs
    - name: tmp-volume
    emptyDir: {}
    serviceAccountName: kubernetes-dashboard
    # Comment the following tolerations if Dashboard must not be deployed on master
    tolerations:
    - key: node-role.kubernetes.io/master
    effect: NoSchedule

    ---

    kind: Service
    apiVersion: v1
    metadata:
    labels:
    k8s-app: dashboard-metrics-scraper
    name: dashboard-metrics-scraper
    namespace: kubernetes-dashboard
    spec:
    ports:
    - port: 8000
    targetPort: 8000
    selector:
    k8s-app: dashboard-metrics-scraper

    ---

    kind: Deployment
    apiVersion: apps/v1
    metadata:
    labels:
    k8s-app: dashboard-metrics-scraper
    name: dashboard-metrics-scraper
    namespace: kubernetes-dashboard
    spec:
    replicas: 1
    revisionHistoryLimit: 10
    selector:
    matchLabels:
    k8s-app: dashboard-metrics-scraper
    template:
    metadata:
    labels:
    k8s-app: dashboard-metrics-scraper
    spec:
    containers:
    - name: dashboard-metrics-scraper
    image: kubernetesui/metrics-scraper-arm64:v1.0.6
    ports:
    - containerPort: 8000
    protocol: TCP
    livenessProbe:
    httpGet:
    scheme: HTTP
    path: /
    port: 8000
    initialDelaySeconds: 30
    timeoutSeconds: 30
    volumeMounts:
    - mountPath: /tmp
    name: tmp-volume
    serviceAccountName: kubernetes-dashboard
    # Comment the following tolerations if Dashboard must not be deployed on master
    tolerations:
    - key: node-role.kubernetes.io/master
    effect: NoSchedule
    volumes:
    - name: tmp-volume
    emptyDir: {}
    ##################dashboard.yaml文件结束#########################
     
     
     
     
    先下载docker镜像
    docker pull kubernetesui/dashboard-arm64:v2.0.5
     
    kubectl apply -f dashboard.yaml
    kubectl get pod -n kubernetes-dashboard
    kubectl get svc -n kubernetes-dashboard
     
    openssl genrsa -out dashboard.key 2048
    openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.90.135'
    openssl x509 -days 3650 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
     
    kubectl create secret generic kubernetes-dashboard-certs --from-file=/soft/dashboard.key --from-file=/soft/dashboard.crt -n kubernetes-dashboard
     
    https://192.168.90.134:31234
     
    kubectl get pods --all-namespaces -o wide
    vim /usr/lib/systemd/system/docker.service [Service] Type=notify ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT ##加入这句
     
    kubectl logs kubernetes-dashboard-597bf6cb58-jcv9g --namespace=kube-system
     
     
     
     

  • 相关阅读:
    Tomcat常用配置
    java开发规范总结_命名规范
    Android学习笔记(广播机制)
    Java Web 实现Mysql 数据库备份与还原
    interfaces
    windows phone 1
    正在写。。
    Exceptions
    类的非常简单的应用
    say hello
  • 原文地址:https://www.cnblogs.com/caomj/p/15706952.html
Copyright © 2011-2022 走看看