k8s常用笔记

安装docker

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

添加国内yum源

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

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

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

yum install -y kubelet-1.14.3 kubeadm-1.14.3 kubectl-1.14.3

systemctl enable kubelet  && systemctl start kubelet

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

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

添加flannel网络

cat <<EOF> /etc/cni/net.d/10-flannel.conf
{"name":"cbr0","type":"flannel","delegate": {"isDefaultGateway": true}}
EOF
mkdir /usr/share/oci-umount/oci-umount.d -p
mkdir /run/flannel/
cat <<EOF> /run/flannel/subnet.env
FLANNEL_NETWORK=172.100.1.0/16
FLANNEL_SUBNET=172.100.1.0/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
EOF

kubectl apply -f kube-flannel.yml

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: flannel
rules:
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - nodes/status
    verbs:
      - patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: flannel
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flannel
subjects:
- kind: ServiceAccount
  name: flannel
  namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flannel
  namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    tier: node
    app: flannel
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "plugins": [
        {
          "type": "flannel",
          "delegate": {
            "hairpinMode": true,
            "isDefaultGateway": true
          }
        },
        {
          "type": "portmap",
          "capabilities": {
            "portMappings": true
          }
        }
      ]
    }
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan"
      }
    }
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: kube-flannel-ds
  namespace: kube-system
  labels:
    tier: node
    app: flannel
spec:
  template:
    metadata:
      labels:
        tier: node
        app: flannel
    spec:
      hostNetwork: true
      nodeSelector:
        beta.kubernetes.io/arch: amd64
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      serviceAccountName: flannel
      initContainers:
      - name: install-cni
        image: quay.io/coreos/flannel:v0.9.1
        command:
        - cp
        args:
        - -f
        - /etc/kube-flannel/cni-conf.json
        - /etc/cni/net.d/10-flannel.conflist
        volumeMounts:
        - name: cni
          mountPath: /etc/cni/net.d
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      containers:
      - name: kube-flannel
        image: quay.io/coreos/flannel:v0.9.1
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        resources:
          requests:
            cpu: "100m"
            memory: "100Mi"
          limits:
            cpu: "100m"
            memory: "200Mi"
        securityContext:
          privileged: true
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        volumeMounts:
        - name: run
          mountPath: /run
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      volumes:
        - name: run
          hostPath:
            path: /run
        - name: cni
          hostPath:
            path: /etc/cni/net.d
        - name: flannel-cfg
          configMap:
            name: kube-flannel-cfg

master允许运行节点

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

提示找不到kubectl

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

查看命令

//查看所有pod
kubectl get pods --all-namespaces 

//查看指定名称空间下的pod
kubectl get pods -n kube-system

//查看节点错误信息
journalctl -f -u kubelet

//查看节点
kubectl get node

//查看服务
kubectl get svc

//查看rc
kubectl get rc

//查看deployment部署
kubectl get deployment

//查看pod信息
kubectl describe pod [PodName] -n kube-system

//查看pod日志
kubectl logs -f  [PodName] -n kube-system

部署rc

apiVersion: v1
kind: ReplicationController
metadata:
  name: tibos-test
spec:
  replicas: 1
  selector:
    name: tibos-test
  template:
    metadata:
      labels: 
       name: tibos-test
    spec:
      containers:
      - name: tibos-test
        image: tibos.test
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

部署svc

apiVersion: v1
kind: Service
metadata:
  name: tibos-test
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
    name: http
    nodePort: 30099
  selector: 
    name: tibos-test

部署Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tibos-ingress
spec:
  rules:
  - host: wmowm.com
    http:
      paths:
      # 配置Context Path
      - path: /test
        backend:
          serviceName: tibos-test
          servicePort: 80
      # 配置Context Path
      - path: /test/v2
        backend:
          serviceName: tibos-test-v2
          servicePort: 80

部署ConfigMap

apiVersion: v1
data:
  appsettings.json: |
    {
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
  "AppSettings": {
    "test": "666",
    "test2": "第二个版本"
  },
      "AllowedHosts": "*"
    }
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: appsettings
  namespace: default

部署Deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tibos-test-v5
spec:
  selector:
    matchLabels:
      app: tibos-test-v5
  template:
    metadata:
      labels:
        app: tibos-test-v5
    spec:
      containers:
      - name: tibos-test-v5
        image: tibos.test.v5
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        volumeMounts:
          - mountPath: /app/appsettings.json
            name: test
            readOnly: true
            subPath: appsettings.json
      volumes:
      - configMap:
          defaultMode: 420
          name: appsettings
        name: test        

部署仪盘表

kubectl apply -f http://mirror.faasx.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

//允许外部访问
kubectl proxy --address='0.0.0.0'  --accept-hosts='^*$'

//赋予admin权限,方便访问
 cat kubernetes-dashboard.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels: 
     k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system

//再次加载仪盘表
kubectl apply -f kubernetes-dashboard.yaml

//启动代理,并挂载在后台运行
kubectl proxy --address='0.0.0.0'  --accept-hosts='^*$' 1>/dev/null  2>&1  &

//访问地址
http://10.0.1.157:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

滚动升级

//rc
kubectl rolling-update tibos-test-v5 --image=tibos.test.v5

//deployments
kubectl set image deployment/tibos-test-v5 tibos-test-v5=tibos.test.v5

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

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

猜你喜欢

转载自www.cnblogs.com/tibos/p/12092342.html