安装docker

  1. // 安装docker
  2. $ yum install -y docker-ce
  3. // 开机启动 && 启动服务
  4. $ systemctl enable docker && systemctl start docker

添加国内yum源

  1. mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
  2. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
  3. wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
  4. yum clean all && yum makecache

添加kubernetes.repo源

  1. [kubernetes]
  2. name=Kubernetes
  3. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  4. enabled=
  5. gpgcheck=
  6. repo_gpgcheck=
  7. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

安装kubelet kubeadm kubectl(并设置开机启动,我这里是1.14.3版本)

  1. yum install -y kubelet-1.14. kubeadm-1.14. kubectl-1.14.
  2.  
  3. systemctl enable kubelet && systemctl start kubelet

初始化k8s,这里初始化有点久,耐心等待

  1. kubeadm init --kubernetes-version=1.14. --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/ --pod-network-cidr=10.244.0.0/

添加flannel网络

  1. cat <<EOF> /etc/cni/net.d/-flannel.conf
  2. {"name":"cbr0","type":"flannel","delegate": {"isDefaultGateway": true}}
  3. EOF
  4. mkdir /usr/share/oci-umount/oci-umount.d -p
  5. mkdir /run/flannel/
  6. cat <<EOF> /run/flannel/subnet.env
  7. FLANNEL_NETWORK=172.100.1.0/
  8. FLANNEL_SUBNET=172.100.1.0/
  9. FLANNEL_MTU=
  10. FLANNEL_IPMASQ=true
  11. EOF

kubectl apply -f kube-flannel.yml

  1. ---
  2. kind: ClusterRole
  3. apiVersion: rbac.authorization.k8s.io/v1beta1
  4. metadata:
  5. name: flannel
  6. rules:
  7. - apiGroups:
  8. - ""
  9. resources:
  10. - pods
  11. verbs:
  12. - get
  13. - apiGroups:
  14. - ""
  15. resources:
  16. - nodes
  17. verbs:
  18. - list
  19. - watch
  20. - apiGroups:
  21. - ""
  22. resources:
  23. - nodes/status
  24. verbs:
  25. - patch
  26. ---
  27. kind: ClusterRoleBinding
  28. apiVersion: rbac.authorization.k8s.io/v1beta1
  29. metadata:
  30. name: flannel
  31. roleRef:
  32. apiGroup: rbac.authorization.k8s.io
  33. kind: ClusterRole
  34. name: flannel
  35. subjects:
  36. - kind: ServiceAccount
  37. name: flannel
  38. namespace: kube-system
  39. ---
  40. apiVersion: v1
  41. kind: ServiceAccount
  42. metadata:
  43. name: flannel
  44. namespace: kube-system
  45. ---
  46. kind: ConfigMap
  47. apiVersion: v1
  48. metadata:
  49. name: kube-flannel-cfg
  50. namespace: kube-system
  51. labels:
  52. tier: node
  53. app: flannel
  54. data:
  55. cni-conf.json: |
  56. {
  57. "name": "cbr0",
  58. "plugins": [
  59. {
  60. "type": "flannel",
  61. "delegate": {
  62. "hairpinMode": true,
  63. "isDefaultGateway": true
  64. }
  65. },
  66. {
  67. "type": "portmap",
  68. "capabilities": {
  69. "portMappings": true
  70. }
  71. }
  72. ]
  73. }
  74. net-conf.json: |
  75. {
  76. "Network": "10.244.0.0/16",
  77. "Backend": {
  78. "Type": "vxlan"
  79. }
  80. }
  81. ---
  82. apiVersion: extensions/v1beta1
  83. kind: DaemonSet
  84. metadata:
  85. name: kube-flannel-ds
  86. namespace: kube-system
  87. labels:
  88. tier: node
  89. app: flannel
  90. spec:
  91. template:
  92. metadata:
  93. labels:
  94. tier: node
  95. app: flannel
  96. spec:
  97. hostNetwork: true
  98. nodeSelector:
  99. beta.kubernetes.io/arch: amd64
  100. tolerations:
  101. - key: node-role.kubernetes.io/master
  102. operator: Exists
  103. effect: NoSchedule
  104. serviceAccountName: flannel
  105. initContainers:
  106. - name: install-cni
  107. image: quay.io/coreos/flannel:v0.9.1
  108. command:
  109. - cp
  110. args:
  111. - -f
  112. - /etc/kube-flannel/cni-conf.json
  113. - /etc/cni/net.d/-flannel.conflist
  114. volumeMounts:
  115. - name: cni
  116. mountPath: /etc/cni/net.d
  117. - name: flannel-cfg
  118. mountPath: /etc/kube-flannel/
  119. containers:
  120. - name: kube-flannel
  121. image: quay.io/coreos/flannel:v0.9.1
  122. command:
  123. - /opt/bin/flanneld
  124. args:
  125. - --ip-masq
  126. - --kube-subnet-mgr
  127. resources:
  128. requests:
  129. cpu: "100m"
  130. memory: "100Mi"
  131. limits:
  132. cpu: "100m"
  133. memory: "200Mi"
  134. securityContext:
  135. privileged: true
  136. env:
  137. - name: POD_NAME
  138. valueFrom:
  139. fieldRef:
  140. fieldPath: metadata.name
  141. - name: POD_NAMESPACE
  142. valueFrom:
  143. fieldRef:
  144. fieldPath: metadata.namespace
  145. volumeMounts:
  146. - name: run
  147. mountPath: /run
  148. - name: flannel-cfg
  149. mountPath: /etc/kube-flannel/
  150. volumes:
  151. - name: run
  152. hostPath:
  153. path: /run
  154. - name: cni
  155. hostPath:
  156. path: /etc/cni/net.d
  157. - name: flannel-cfg
  158. configMap:
  159. name: kube-flannel-cfg

master允许运行节点

  1. kubectl taint nodes --all node-role.kubernetes.io/master-

提示找不到kubectl

  1. cp /etc/kubernetes/admin.conf ~/.kube/config

查看命令

  1. //查看所有pod
  2. kubectl get pods --all-namespaces
  3.  
  4. //查看指定名称空间下的pod
  5. kubectl get pods -n kube-system
  6.  
  7. //查看节点错误信息
  8. journalctl -f -u kubelet
  9.  
  10. //查看节点
  11. kubectl get node
  12.  
  13. //查看服务
  14. kubectl get svc
  15.  
  16. //查看rc
  17. kubectl get rc
  18.  
  19. //查看deployment部署
  20. kubectl get deployment
  21.  
  22. //查看pod信息
  23. kubectl describe pod [PodName] -n kube-system
  24.  
  25. //查看pod日志
  26. kubectl logs -f [PodName] -n kube-system

部署rc

  1. apiVersion: v1
  2. kind: ReplicationController
  3. metadata:
  4. name: tibos-test
  5. spec:
  6. replicas:
  7. selector:
  8. name: tibos-test
  9. template:
  10. metadata:
  11. labels:
  12. name: tibos-test
  13. spec:
  14. containers:
  15. - name: tibos-test
  16. image: tibos.test
  17. imagePullPolicy: IfNotPresent
  18. ports:
  19. - containerPort:

部署svc

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: tibos-test
  5. spec:
  6. type: NodePort
  7. ports:
  8. - port:
  9. protocol: TCP
  10. targetPort:
  11. name: http
  12. nodePort:
  13. selector:
  14. name: tibos-test

部署Ingress

  1. apiVersion: extensions/v1beta1
  2. kind: Ingress
  3. metadata:
  4. name: tibos-ingress
  5. spec:
  6. rules:
  7. - host: wmowm.com
  8. http:
  9. paths:
  10. # 配置Context Path
  11. - path: /test
  12. backend:
  13. serviceName: tibos-test
  14. servicePort:
  15. # 配置Context Path
  16. - path: /test/v2
  17. backend:
  18. serviceName: tibos-test-v2
  19. servicePort:

部署ConfigMap

  1. apiVersion: v1
  2. data:
  3. appsettings.json: |
  4. {
  5. "Logging": {
  6. "LogLevel": {
  7. "Default": "Warning"
  8. }
  9. },
  10. "AppSettings": {
  11. "test": "",
  12. "test2": "第二个版本"
  13. },
  14. "AllowedHosts": "*"
  15. }
  16. kind: ConfigMap
  17. metadata:
  18. creationTimestamp: null
  19. name: appsettings
  20. namespace: default

部署Deployment

  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4. name: tibos-test-v5
  5. spec:
  6. selector:
  7. matchLabels:
  8. app: tibos-test-v5
  9. template:
  10. metadata:
  11. labels:
  12. app: tibos-test-v5
  13. spec:
  14. containers:
  15. - name: tibos-test-v5
  16. image: tibos.test.v5
  17. imagePullPolicy: IfNotPresent
  18. ports:
  19. - containerPort:
  20. volumeMounts:
  21. - mountPath: /app/appsettings.json
  22. name: test
  23. readOnly: true
  24. subPath: appsettings.json
  25. volumes:
  26. - configMap:
  27. defaultMode:
  28. name: appsettings
  29. name: test

部署仪盘表

  1. kubectl apply -f http://mirror.faasx.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
  2.  
  3. //允许外部访问
  4. kubectl proxy --address='0.0.0.0' --accept-hosts='^*$'
  5.  
  6. //赋予admin权限,方便访问
  7. cat kubernetes-dashboard.yaml
  8. apiVersion: rbac.authorization.k8s.io/v1beta1
  9. kind: ClusterRoleBinding
  10. metadata:
  11. name: kubernetes-dashboard
  12. labels:
  13. k8s-app: kubernetes-dashboard
  14. roleRef:
  15. apiGroup: rbac.authorization.k8s.io
  16. kind: ClusterRole
  17. name: cluster-admin
  18. subjects:
  19. - kind: ServiceAccount
  20. name: kubernetes-dashboard
  21. namespace: kube-system
  22.  
  23. //再次加载仪盘表
  24. kubectl apply -f kubernetes-dashboard.yaml
  25.  
  26. //启动代理,并挂载在后台运行
  27. kubectl proxy --address='0.0.0.0' --accept-hosts='^*$' >/dev/null >& &
  28.  
  29. //访问地址
  30. http://10.0.1.157:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

滚动升级

  1. //rc
  2. kubectl rolling-update tibos-test-v5 --image=tibos.test.v5
  3.  
  4. //deployments
  5. kubectl set image deployment/tibos-test-v5 tibos-test-v5=tibos.test.v5

pod无法访问外网,节点添加一条路由规则

  1. /sbin/iptables -t nat -I POSTROUTING -s 172.30.60.0/ -j MASQUERADE

k8s常用笔记的更多相关文章

  1. [转帖] K8S 常用命令

    k8s常用命令  原贴地址 查看集群信息: [root@kubernetes-master pods]# kubectl cluster-info kubectl cluster-info展示结果 k ...

  2. git tag 常用笔记

    git tag 常用笔记 查看 tag 列出现有 tag git tag 列出 v1.4.2 相关的 tag git tag -l "v1.4.2" 查看指定 tag 的信息 gi ...

  3. K8s常用命令操作

    K8s常用命令操作 一.kubectl命令补全 1.master安装命令补全,并临时生效 yum install -y bash-completion source /usr/share/bash-c ...

  4. k8s常用操作命令

    K8s常用命令操作 一.kubectl命令补全 .master安装命令补全,并临时生效 yum install -y bash-completion source /usr/share/bash-co ...

  5. 【K8s学习笔记】K8s是如何部署应用的?

    本文内容 本文致力于介绍K8s一些基础概念与串联部署应用的主体流程,使用Minikube实操 基础架构概念回顾 温故而知新,上一节[K8S学习笔记]初识K8S 及架构组件 我们学习了K8s的发展历史. ...

  6. k8s学习笔记之五:Pod资源清单spec字段常用字段及含义

    第一章.前言 在上一篇博客中,我们大致简述了一般情况下资源清单的格式,以及如何获得清单配置的命令帮助,下面我们再讲解下清单中spec字段中比较常见的字段及其含义 第二章.常用字段讲解 spec.con ...

  7. k8s学习笔记之八:存储卷

    第一章.前言 默认情况下容器的数据都是非持久化的, 在容器消亡以后数据也跟着丢失, 所以 Docker 提供了 Volume 机制以便将数据持久化存储. 类似的, Kubernetes 提供了更强大的 ...

  8. k8s常用命令

    K8s一些命令:通过yaml文件创建:kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete)kubectl apply -f xxx.yaml (创建+更新 ...

  9. K8S学习笔记之Kubernetes核心概念

    0x00  Kubernetes简介 Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践. K8S在Doc ...

随机推荐

  1. Java版基于SpringBoot+Vue.js实现自动创表自动定时采集(各个微信公众号商城产品进行采集)-爬虫篇

  2. VS2012在解决方案资源管理器显示解决方案名称

    工具>选项>项目与解决方案(需点右下方的显示所有)>点上 总是显示解决方案

  3. bzoj5518 & loj3046 「ZJOI2019」语言 线段树合并+树链的并

    题目传送门 https://loj.ac/problem/3046 题解 首先问题就是问有多少条路径是给定的几条路径中的一条的一个子段. 先考虑链的做法. 枚举右端点 \(i\),那么求出 \(j\) ...

  4. SoupUI 结合loadrunner压力测试

    SoupUI 结合loadrunner压力测试 上一篇介绍了SoupUI接口测试,因为工作需要,需要在loadrunner进行websocket的压力测试,当然,SoupUI本身也是可以做性能测试的 ...

  5. MySQL数据库5事务、视图、触发器、函数、数据库的备份

    目录 一.事务(important) 1.1什么是事务? 1.2解决办法 1.2.1事务的语法 1.2.2使用事务解决转账问题代码演示 1.2.3rollback 1.3事务的特性(important ...

  6. redis学习 --Sorted Set

    一.概述: Sorted Set(有序集合)和Set类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted Set中的每一个成员都会有一个分数(sc ...

  7. java中 运算符

    我们先讨论  &,&&,| ,||  这四个运算符 boolean a=true; boolean b=true; boolean c=false; //输出:a为true,b ...

  8. 小陈现有2个任务A,B要完成,每个任务分别有若干步骤如下 一道网上没啥题解的难题(至少我是这么觉得的)

    小陈现有2个任务A,B要完成,每个任务分别有若干步骤如下:A=a1->a2->a3,B=b1->b2->b3->b4->b5.在任何时候,小陈只能专心做某个任务的一 ...

  9. HTTrack Website Copier 扫描规则

    +*.css +*.js -ad.doubleclick.net/* -mime:application/foobar+*.gif +*.jpg +*.jpeg +*.png +*.tif +*.bm ...

  10. Ntdll.h

    转自:https://www.cnblogs.com/gwsbhqt/p/5092390.html 为了能使用上Ntdll.lib库函数,从几份不完整的Ntdll.h中拼凑整理出了比较完整美观的Ntd ...