Linux安装Kubernetes(k8s)具体教程

打印 上一主题 下一主题

主题 546|帖子 546|积分 1638

系统初始化

   生产环境肯定要更高设置,虚拟机以守旧的最低设置。
  呆板ip规格master192.168.203.111核2线程、2G内存、40G磁盘node2192.168.203.121核2线程、2G内存、40G磁盘node3192.168.203.131核2线程、2G内存、40G磁盘 修改为静态ip

  1. vi /etc/resolv.conf
复制代码
追加内容后生存并退出
  1. nameserver 223.5.5.5
  2. nameserver 223.6.6.6
复制代码
  1. sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
复制代码
BOOTPROTO="dhcp"改成BOOTPROTO=“static”,如果是复制的呆板UUID、IPADDR也要不同等
  1. TYPE="Ethernet"
  2. PROXY_METHOD="none"
  3. BROWSER_ONLY="no"
  4. BOOTPROTO="static"
  5. DEFROUTE="yes"
  6. IPV4_FAILURE_FATAL="no"
  7. IPV6INIT="yes"
  8. IPV6_AUTOCONF="yes"
  9. IPV6_DEFROUTE="yes"
  10. IPV6_FAILURE_FATAL="no"
  11. IPV6_ADDR_GEN_MODE="stable-privacy"
  12. NAME="ens33"
  13. UUID="0ef41c81-2fa8-405d-9ab5-3ff34ac815cf"
  14. DEVICE="ens33"
  15. ONBOOT="yes"
  16. IPADDR="192.168.203.11"
  17. PREFIX="24"
  18. GATEWAY="192.168.203.2"
  19. IPV6_PRIVACY="no"
复制代码
重启网络使设置生效
  1. sudo systemctl restart network
复制代码
永久关闭防火墙(全部呆板)

  1. sudo systemctl stop firewalld && systemctl disable firewalld
复制代码
永久关闭selinux(全部呆板)

  1. sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
复制代码
启用selinux命令:setenforce 0【不必要实行,只是作为一种记载】
永久禁止swap分区(全部呆板)

  1. sudo sed -ri 's/.*swap.*/#&/' /etc/fstab
复制代码
永久设置hostname(根据呆板分别设置mster、node1、node2)

三台呆板分别为mster、node1、node2
  1. sudo hostnamectl set-hostname master
复制代码
利用hostnamectl或hostname命令验证是否修改成功
在hosts文件添加内容(仅master设置)

  1. sudo cat >> /etc/hosts << EOF
  2. 192.168.203.11 master
  3. 192.168.203.12 node1
  4. 192.168.203.13 node2
  5. EOF
复制代码
将桥接的IPv4流量通报到iptables的链(全部呆板)

  1. sudo cat > /etc/sysctl.d/k8s.conf << EOF
  2. net.bridge.bridge-nf-call-ip6tables = 1
  3. net.bridge.bridge-nf-call-iptables = 1
  4. net.ipv4.ip_forward = 1
  5. vm.swappiness = 0
  6. EOF
复制代码
使k8s.conf立即生效
  1. sudo sysctl --system
复制代码
时间同步(全部呆板)

  1. sudo yum install -y ntpdate
复制代码
安装好后实行同步时间命令
  1. sudo ntpdate time.windows.com
复制代码
全部呆板安装Docker、Kubeadm、Kubelet、Kubectl

安装Docker

安装必要的一些系统工具
  1. yum install -y net-tools
  2. yum install -y wget
  3. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码
安装设置管理和设置镜像源
  1. sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  2. sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
复制代码
查找Docker-CE的版本
  1. sudo yum list docker-ce.x86_64 --showduplicates | sort -r
复制代码
安装指定版本的docker-ce
sudo yum -y install docker-ce-[VERSION]
  1. sudo yum -y install docker-ce-18.06.1.ce-3.el7
复制代码
启动docker服务
  1. sudo systemctl enable docker && sudo systemctl start docker
复制代码
查察docker是否启动成功【注意docker的Client和Server要同等,否则某些情况下会报错】
  1. sudo docker --version
复制代码
创建/etc/docker/daemon.json文件并设置docker堆栈为aliyun堆栈

  1. sudo cat > /etc/docker/daemon.json << EOF
  2. {
  3.         "registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"]
  4. }
  5. EOF
复制代码
重启docker查察设置是否生效
  1. sudo docker info
复制代码
重启

  1. sudo reboot now
复制代码
添加yum软件源kubernetes.repo为阿里云

  1. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  5. enabled=1
  6. gpgcheck=0
  7. repo_gpgcheck=0
  8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  9. EOF
复制代码
安装 kubelet、kubeadm、kubectl

  1. sudo yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
复制代码
设置开机启动和启动
  1. sudo systemctl enable kubelet && systemctl start kubelet
复制代码
摆设Kubernetes

   apiserver-advertise-address表示master主机ip
image-repository表示镜像堆栈
kubernetes-version表示k8s的版本,跟上面的kubelet、kubeadm、kubectl版本同等
service-cidr表示集群内部虚拟网络,Pod统一访问入口
pod-network-cidr表示Pod网络,与下面摆设的CNI网络组件yaml中保持同等
  Kubernetes初始化【仅master实行,过程大概会有点久,请耐心等待命令行输出】

–v=5可加可不加,建议加,输出完备的日志,方便排盘题目
  1. kubeadm init \
  2. --v=5 \
  3. --apiserver-advertise-address=192.168.203.11 \
  4. --image-repository=registry.aliyuncs.com/google_containers \
  5. --kubernetes-version=v1.18.0 \
  6. --service-cidr=10.96.0.0/12 \
  7. --pod-network-cidr=10.244.0.0/16
复制代码
输出以下内容表示初始化成功
  1. Your Kubernetes control-plane has initialized successfully!
  2. To start using your cluster, you need to run the following as a regular user:
  3.   mkdir -p $HOME/.kube
  4.   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  5.   sudo chown $(id -u):$(id -g) $HOME/.kube/config
  6. You should now deploy a pod network to the cluster.
  7. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  8.   https://kubernetes.io/docs/concepts/cluster-administration/addons/
  9. Then you can join any number of worker nodes by running the following on each as root:
  10. kubeadm join 192.168.203.11:6443 --token 51c0rb.ehwwxemgec75r1g6 \
  11.     --discovery-token-ca-cert-hash sha256:fad429370f462b36d2651e3e37be4d4b34e63d0378966a1532442dc3f67e41b4
复制代码
根据上面的提示实行对应的To start using your cluster, you need to run the following as a regular user:命令

   master节点实行,node节点不实行
kubectl get node
s查察节点信息
  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  4. kubectl get node
  5. s
复制代码
node节点根据上面的提示实行对应的Then you can join any number of worker nodes by running the following on each as root:命令

   node节点实行,master节点不实行
  1. kubeadm join 192.168.203.11:6443 --token 51c0rb.ehwwxemgec75r1g6 \
  2.     --discovery-token-ca-cert-hash sha256:fad429370f462b36d2651e3e37be4d4b34e63d0378966a1532442dc3f67e41b4
复制代码
node1和node2实行命令

安装cni
kube-flannel-ds-amd.yml文件

  1. ---
  2. apiVersion: policy/v1beta1
  3. kind: PodSecurityPolicy
  4. metadata:
  5.   name: psp.flannel.unprivileged
  6.   annotations:
  7.     seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default
  8.     seccomp.security.alpha.kubernetes.io/defaultProfileName: docker/default
  9.     apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default
  10.     apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default
  11. spec:
  12.   privileged: false
  13.   volumes:
  14.     - configMap
  15.     - secret
  16.     - emptyDir
  17.     - hostPath
  18.   allowedHostPaths:
  19.     - pathPrefix: "/etc/cni/net.d"
  20.     - pathPrefix: "/etc/kube-flannel"
  21.     - pathPrefix: "/run/flannel"
  22.   readOnlyRootFilesystem: false
  23.   # Users and groups
  24.   runAsUser:
  25.     rule: RunAsAny
  26.   supplementalGroups:
  27.     rule: RunAsAny
  28.   fsGroup:
  29.     rule: RunAsAny
  30.   # Privilege Escalation
  31.   allowPrivilegeEscalation: false
  32.   defaultAllowPrivilegeEscalation: false
  33.   # Capabilities
  34.   allowedCapabilities: ['NET_ADMIN']
  35.   defaultAddCapabilities: []
  36.   requiredDropCapabilities: []
  37.   # Host namespaces
  38.   hostPID: false
  39.   hostIPC: false
  40.   hostNetwork: true
  41.   hostPorts:
  42.   - min: 0
  43.     max: 65535
  44.   # SELinux
  45.   seLinux:
  46.     # SELinux is unused in CaaSP
  47.     rule: 'RunAsAny'
  48. ---
  49. kind: ClusterRole
  50. apiVersion: rbac.authorization.k8s.io/v1beta1
  51. metadata:
  52.   name: flannel
  53. rules:
  54.   - apiGroups: ['extensions']
  55.     resources: ['podsecuritypolicies']
  56.     verbs: ['use']
  57.     resourceNames: ['psp.flannel.unprivileged']
  58.   - apiGroups:
  59.       - ""
  60.     resources:
  61.       - pods
  62.     verbs:
  63.       - get
  64.   - apiGroups:
  65.       - ""
  66.     resources:
  67.       - nodes
  68.     verbs:
  69.       - list
  70.       - watch
  71.   - apiGroups:
  72.       - ""
  73.     resources:
  74.       - nodes/status
  75.     verbs:
  76.       - patch
  77. ---
  78. kind: ClusterRoleBinding
  79. apiVersion: rbac.authorization.k8s.io/v1beta1
  80. metadata:
  81.   name: flannel
  82. roleRef:
  83.   apiGroup: rbac.authorization.k8s.io
  84.   kind: ClusterRole
  85.   name: flannel
  86. subjects:
  87. - kind: ServiceAccount
  88.   name: flannel
  89.   namespace: kube-system
  90. ---
  91. apiVersion: v1
  92. kind: ServiceAccount
  93. metadata:
  94.   name: flannel
  95.   namespace: kube-system
  96. ---
  97. kind: ConfigMap
  98. apiVersion: v1
  99. metadata:
  100.   name: kube-flannel-cfg
  101.   namespace: kube-system
  102.   labels:
  103.     tier: node
  104.     app: flannel
  105. data:
  106.   cni-conf.json: |
  107.     {
  108.       "name": "cbr0",
  109.       "cniVersion": "0.3.1",
  110.       "plugins": [
  111.         {
  112.           "type": "flannel",
  113.           "delegate": {
  114.             "hairpinMode": true,
  115.             "isDefaultGateway": true
  116.           }
  117.         },
  118.         {
  119.           "type": "portmap",
  120.           "capabilities": {
  121.             "portMappings": true
  122.           }
  123.         }
  124.       ]
  125.     }
  126.   net-conf.json: |
  127.     {
  128.       "Network": "10.244.0.0/16",
  129.       "Backend": {
  130.         "Type": "vxlan"
  131.       }
  132.     }
  133. ---
  134. apiVersion: apps/v1
  135. kind: DaemonSet
  136. metadata:
  137.   name: kube-flannel-ds-amd64
  138.   namespace: kube-system
  139.   labels:
  140.     tier: node
  141.     app: flannel
  142. spec:
  143.   selector:
  144.     matchLabels:
  145.       app: flannel
  146.   template:
  147.     metadata:
  148.       labels:
  149.         tier: node
  150.         app: flannel
  151.     spec:
  152.       affinity:
  153.         nodeAffinity:
  154.           requiredDuringSchedulingIgnoredDuringExecution:
  155.             nodeSelectorTerms:
  156.               - matchExpressions:
  157.                   - key: beta.kubernetes.io/os
  158.                     operator: In
  159.                     values:
  160.                       - linux
  161.                   - key: beta.kubernetes.io/arch
  162.                     operator: In
  163.                     values:
  164.                       - amd64
  165.       hostNetwork: true
  166.       tolerations:
  167.       - operator: Exists
  168.         effect: NoSchedule
  169.       serviceAccountName: flannel
  170.       initContainers:
  171.       - name: install-cni
  172.         image: quay.io/coreos/flannel:v0.13.0-rc2
  173.         command:
  174.         - cp
  175.         args:
  176.         - -f
  177.         - /etc/kube-flannel/cni-conf.json
  178.         - /etc/cni/net.d/10-flannel.conflist
  179.         volumeMounts:
  180.         - name: cni
  181.           mountPath: /etc/cni/net.d
  182.         - name: flannel-cfg
  183.           mountPath: /etc/kube-flannel/
  184.       containers:
  185.       - name: kube-flannel
  186.         image: quay.io/coreos/flannel:v0.13.0-rc2
  187.         command:
  188.         - /opt/bin/flanneld
  189.         args:
  190.         - --ip-masq
  191.         - --kube-subnet-mgr
  192.         resources:
  193.           requests:
  194.             cpu: "100m"
  195.             memory: "50Mi"
  196.           limits:
  197.             cpu: "100m"
  198.             memory: "50Mi"
  199.         securityContext:
  200.           privileged: false
  201.           capabilities:
  202.             add: ["NET_ADMIN"]
  203.         env:
  204.         - name: POD_NAME
  205.           valueFrom:
  206.             fieldRef:
  207.               fieldPath: metadata.name
  208.         - name: POD_NAMESPACE
  209.           valueFrom:
  210.             fieldRef:
  211.               fieldPath: metadata.namespace
  212.         volumeMounts:
  213.         - name: run
  214.           mountPath: /run/flannel
  215.         - name: flannel-cfg
  216.           mountPath: /etc/kube-flannel/
  217.       volumes:
  218.         - name: run
  219.           hostPath:
  220.             path: /run/flannel
  221.         - name: cni
  222.           hostPath:
  223.             path: /etc/cni/net.d
  224.         - name: flannel-cfg
  225.           configMap:
  226.             name: kube-flannel-cfg
  227. ---
  228. apiVersion: apps/v1
  229. kind: DaemonSet
  230. metadata:
  231.   name: kube-flannel-ds-arm64
  232.   namespace: kube-system
  233.   labels:
  234.     tier: node
  235.     app: flannel
  236. spec:
  237.   selector:
  238.     matchLabels:
  239.       app: flannel
  240.   template:
  241.     metadata:
  242.       labels:
  243.         tier: node
  244.         app: flannel
  245.     spec:
  246.       affinity:
  247.         nodeAffinity:
  248.           requiredDuringSchedulingIgnoredDuringExecution:
  249.             nodeSelectorTerms:
  250.               - matchExpressions:
  251.                   - key: beta.kubernetes.io/os
  252.                     operator: In
  253.                     values:
  254.                       - linux
  255.                   - key: beta.kubernetes.io/arch
  256.                     operator: In
  257.                     values:
  258.                       - arm64
  259.       hostNetwork: true
  260.       tolerations:
  261.       - operator: Exists
  262.         effect: NoSchedule
  263.       serviceAccountName: flannel
  264.       initContainers:
  265.       - name: install-cni
  266.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-arm64
  267.         command:
  268.         - cp
  269.         args:
  270.         - -f
  271.         - /etc/kube-flannel/cni-conf.json
  272.         - /etc/cni/net.d/10-flannel.conflist
  273.         volumeMounts:
  274.         - name: cni
  275.           mountPath: /etc/cni/net.d
  276.         - name: flannel-cfg
  277.           mountPath: /etc/kube-flannel/
  278.       containers:
  279.       - name: kube-flannel
  280.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-arm64
  281.         command:
  282.         - /opt/bin/flanneld
  283.         args:
  284.         - --ip-masq
  285.         - --kube-subnet-mgr
  286.         resources:
  287.           requests:
  288.             cpu: "100m"
  289.             memory: "50Mi"
  290.           limits:
  291.             cpu: "100m"
  292.             memory: "50Mi"
  293.         securityContext:
  294.           privileged: false
  295.           capabilities:
  296.              add: ["NET_ADMIN"]
  297.         env:
  298.         - name: POD_NAME
  299.           valueFrom:
  300.             fieldRef:
  301.               fieldPath: metadata.name
  302.         - name: POD_NAMESPACE
  303.           valueFrom:
  304.             fieldRef:
  305.               fieldPath: metadata.namespace
  306.         volumeMounts:
  307.         - name: run
  308.           mountPath: /run/flannel
  309.         - name: flannel-cfg
  310.           mountPath: /etc/kube-flannel/
  311.       volumes:
  312.         - name: run
  313.           hostPath:
  314.             path: /run/flannel
  315.         - name: cni
  316.           hostPath:
  317.             path: /etc/cni/net.d
  318.         - name: flannel-cfg
  319.           configMap:
  320.             name: kube-flannel-cfg
  321. ---
  322. apiVersion: apps/v1
  323. kind: DaemonSet
  324. metadata:
  325.   name: kube-flannel-ds-arm
  326.   namespace: kube-system
  327.   labels:
  328.     tier: node
  329.     app: flannel
  330. spec:
  331.   selector:
  332.     matchLabels:
  333.       app: flannel
  334.   template:
  335.     metadata:
  336.       labels:
  337.         tier: node
  338.         app: flannel
  339.     spec:
  340.       affinity:
  341.         nodeAffinity:
  342.           requiredDuringSchedulingIgnoredDuringExecution:
  343.             nodeSelectorTerms:
  344.               - matchExpressions:
  345.                   - key: beta.kubernetes.io/os
  346.                     operator: In
  347.                     values:
  348.                       - linux
  349.                   - key: beta.kubernetes.io/arch
  350.                     operator: In
  351.                     values:
  352.                       - arm
  353.       hostNetwork: true
  354.       tolerations:
  355.       - operator: Exists
  356.         effect: NoSchedule
  357.       serviceAccountName: flannel
  358.       initContainers:
  359.       - name: install-cni
  360.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-arm
  361.         command:
  362.         - cp
  363.         args:
  364.         - -f
  365.         - /etc/kube-flannel/cni-conf.json
  366.         - /etc/cni/net.d/10-flannel.conflist
  367.         volumeMounts:
  368.         - name: cni
  369.           mountPath: /etc/cni/net.d
  370.         - name: flannel-cfg
  371.           mountPath: /etc/kube-flannel/
  372.       containers:
  373.       - name: kube-flannel
  374.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-arm
  375.         command:
  376.         - /opt/bin/flanneld
  377.         args:
  378.         - --ip-masq
  379.         - --kube-subnet-mgr
  380.         resources:
  381.           requests:
  382.             cpu: "100m"
  383.             memory: "50Mi"
  384.           limits:
  385.             cpu: "100m"
  386.             memory: "50Mi"
  387.         securityContext:
  388.           privileged: false
  389.           capabilities:
  390.              add: ["NET_ADMIN"]
  391.         env:
  392.         - name: POD_NAME
  393.           valueFrom:
  394.             fieldRef:
  395.               fieldPath: metadata.name
  396.         - name: POD_NAMESPACE
  397.           valueFrom:
  398.             fieldRef:
  399.               fieldPath: metadata.namespace
  400.         volumeMounts:
  401.         - name: run
  402.           mountPath: /run/flannel
  403.         - name: flannel-cfg
  404.           mountPath: /etc/kube-flannel/
  405.       volumes:
  406.         - name: run
  407.           hostPath:
  408.             path: /run/flannel
  409.         - name: cni
  410.           hostPath:
  411.             path: /etc/cni/net.d
  412.         - name: flannel-cfg
  413.           configMap:
  414.             name: kube-flannel-cfg
  415. ---
  416. apiVersion: apps/v1
  417. kind: DaemonSet
  418. metadata:
  419.   name: kube-flannel-ds-ppc64le
  420.   namespace: kube-system
  421.   labels:
  422.     tier: node
  423.     app: flannel
  424. spec:
  425.   selector:
  426.     matchLabels:
  427.       app: flannel
  428.   template:
  429.     metadata:
  430.       labels:
  431.         tier: node
  432.         app: flannel
  433.     spec:
  434.       affinity:
  435.         nodeAffinity:
  436.           requiredDuringSchedulingIgnoredDuringExecution:
  437.             nodeSelectorTerms:
  438.               - matchExpressions:
  439.                   - key: beta.kubernetes.io/os
  440.                     operator: In
  441.                     values:
  442.                       - linux
  443.                   - key: beta.kubernetes.io/arch
  444.                     operator: In
  445.                     values:
  446.                       - ppc64le
  447.       hostNetwork: true
  448.       tolerations:
  449.       - operator: Exists
  450.         effect: NoSchedule
  451.       serviceAccountName: flannel
  452.       initContainers:
  453.       - name: install-cni
  454.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-ppc64le
  455.         command:
  456.         - cp
  457.         args:
  458.         - -f
  459.         - /etc/kube-flannel/cni-conf.json
  460.         - /etc/cni/net.d/10-flannel.conflist
  461.         volumeMounts:
  462.         - name: cni
  463.           mountPath: /etc/cni/net.d
  464.         - name: flannel-cfg
  465.           mountPath: /etc/kube-flannel/
  466.       containers:
  467.       - name: kube-flannel
  468.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-ppc64le
  469.         command:
  470.         - /opt/bin/flanneld
  471.         args:
  472.         - --ip-masq
  473.         - --kube-subnet-mgr
  474.         resources:
  475.           requests:
  476.             cpu: "100m"
  477.             memory: "50Mi"
  478.           limits:
  479.             cpu: "100m"
  480.             memory: "50Mi"
  481.         securityContext:
  482.           privileged: false
  483.           capabilities:
  484.              add: ["NET_ADMIN"]
  485.         env:
  486.         - name: POD_NAME
  487.           valueFrom:
  488.             fieldRef:
  489.               fieldPath: metadata.name
  490.         - name: POD_NAMESPACE
  491.           valueFrom:
  492.             fieldRef:
  493.               fieldPath: metadata.namespace
  494.         volumeMounts:
  495.         - name: run
  496.           mountPath: /run/flannel
  497.         - name: flannel-cfg
  498.           mountPath: /etc/kube-flannel/
  499.       volumes:
  500.         - name: run
  501.           hostPath:
  502.             path: /run/flannel
  503.         - name: cni
  504.           hostPath:
  505.             path: /etc/cni/net.d
  506.         - name: flannel-cfg
  507.           configMap:
  508.             name: kube-flannel-cfg
  509. ---
  510. apiVersion: apps/v1
  511. kind: DaemonSet
  512. metadata:
  513.   name: kube-flannel-ds-s390x
  514.   namespace: kube-system
  515.   labels:
  516.     tier: node
  517.     app: flannel
  518. spec:
  519.   selector:
  520.     matchLabels:
  521.       app: flannel
  522.   template:
  523.     metadata:
  524.       labels:
  525.         tier: node
  526.         app: flannel
  527.     spec:
  528.       affinity:
  529.         nodeAffinity:
  530.           requiredDuringSchedulingIgnoredDuringExecution:
  531.             nodeSelectorTerms:
  532.               - matchExpressions:
  533.                   - key: beta.kubernetes.io/os
  534.                     operator: In
  535.                     values:
  536.                       - linux
  537.                   - key: beta.kubernetes.io/arch
  538.                     operator: In
  539.                     values:
  540.                       - s390x
  541.       hostNetwork: true
  542.       tolerations:
  543.       - operator: Exists
  544.         effect: NoSchedule
  545.       serviceAccountName: flannel
  546.       initContainers:
  547.       - name: install-cni
  548.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-s390x
  549.         command:
  550.         - cp
  551.         args:
  552.         - -f
  553.         - /etc/kube-flannel/cni-conf.json
  554.         - /etc/cni/net.d/10-flannel.conflist
  555.         volumeMounts:
  556.         - name: cni
  557.           mountPath: /etc/cni/net.d
  558.         - name: flannel-cfg
  559.           mountPath: /etc/kube-flannel/
  560.       containers:
  561.       - name: kube-flannel
  562.         image: quay-mirror.qiniu.com/coreos/flannel:v0.11.0-s390x
  563.         command:
  564.         - /opt/bin/flanneld
  565.         args:
  566.         - --ip-masq
  567.         - --kube-subnet-mgr
  568.         resources:
  569.           requests:
  570.             cpu: "100m"
  571.             memory: "50Mi"
  572.           limits:
  573.             cpu: "100m"
  574.             memory: "50Mi"
  575.         securityContext:
  576.           privileged: false
  577.           capabilities:
  578.              add: ["NET_ADMIN"]
  579.         env:
  580.         - name: POD_NAME
  581.           valueFrom:
  582.             fieldRef:
  583.               fieldPath: metadata.name
  584.         - name: POD_NAMESPACE
  585.           valueFrom:
  586.             fieldRef:
  587.               fieldPath: metadata.namespace
  588.         volumeMounts:
  589.         - name: run
  590.           mountPath: /run/flannel
  591.         - name: flannel-cfg
  592.           mountPath: /etc/kube-flannel/
  593.       volumes:
  594.         - name: run
  595.           hostPath:
  596.             path: /run/flannel
  597.         - name: cni
  598.           hostPath:
  599.             path: /etc/cni/net.d
  600.         - name: flannel-cfg
  601.           configMap:
  602.             name: kube-flannel-cfg
复制代码
  1. docker pull quay.io/coreos/flannel:v0.13.0-rc2
  2. kubectl apply -f kube-flannel-ds-amd.yml
复制代码
kubectl get pod -n kube-system 查察kube-flannel-ds-XXX 是否为runnin状态
  1. systemctl restart kubelet
  2. kubectl get pod -n kube-system
复制代码
master实行
  1. kubectl get node
复制代码
node1和node2节点处于Ready状态
  1. [root@master ~]# kubectl get node
  2. NAME     STATUS   ROLES    AGE   VERSIONmaster   Ready    master   50m   v1.18.0node1    Ready    <none>   49m   v1.18.0node2    Ready    <none>   49m   v1.18.0
复制代码
master摆设CNI网络插件【如果前面没有把–network-plugin=cni移除并重启kubelet,这步很大概会报错】

  1. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  2. kubectl get pods -n kube-system
  3. kubectl get node
复制代码
master实行测试Kubernetes(k8s)集群

  1. kubectl create deployment nginx --image=nginx
  2. kubectl expose deployment nginx --port=80 --type=NodePort
  3. kubectl get pod,svc
复制代码
输出如下
  1. NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
  2. service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        21m
  3. service/nginx        NodePort    10.108.8.133   <none>        80:30008/TCP   111s
复制代码
如果nginx启动失败,则举行删除

  1. kubectl delete service nginx
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表